Je suis très nouveau à étincelle. Je suis en train de tirer la date et le message d'erreur de l'erreur suivante journalBesoin de tirer un message spécifique en utilisant étincelle
11 nov 09:44:53 www httpd [1933]: [error] [client 10.2.23.89] (36) Nom de fichier trop à long
11 nov 09:49:38 www httpd [2728]: [error] [client 10.2.23.128] (36) nom de fichier trop long
11 nov 10:14:23 www httpd [4530] : [erreur] [client 10.2.23.243] (36) Nom de fichier trop long
11 novembre 10:15:24 www httpd [4630]: [erreur] [client 10.2.23.42] (36) Nom de fichier trop long
11 novembre 12:05:07 www httpd [12062]: [error] [client 10.2.23.148] (36) Nom du fichier trop long
Ce mon script que je l'ai utilisé dans la coquille scala
val inputfile = sc.textFile("hdfs://localhost:8020/kirthi/errorlog.txt")
val elog = inputfile.map(line => (line.substring(0, 6),line.substring(65, 83)))
elog.collect()
C'est la sortie que j'obtiens mais ce n'est pas comme prévu. Le message n'est pas complètement tiré dans tous les tuples. Depuis la longueur de chaque ligne de journal varie.
Array[(String, String)] = Array((Nov 11,File name too long), (Nov 11,)File name too lon), (Nov 11,)File name too lon), (Nov 11,File name too long), (Nov 11,6)File name too lo))
Mais je veux la sortie comme affiché ci-dessous
Array[(String, String)] = Array((Nov 11,File name too long), (Nov 11,File name too long), (Nov 11,File name too long), (Nov 11,File name too long), (Nov 11,File name too long))
Si j'augmente la longueur de la sous-chaîne, je frappais avec un tableau hors limites erreur d'attente.
Ce plus d'une question regex qu'une question Spark, – marios