Ich habe das Protokoll unten versucht, es durch die angezeigte Spaltennummer 1 als Datum zu analysieren, 2 als Zeit, 3 als Aufgabe, 4 als ERROR_LINE und 5 alle übrigen Spalten als ERROR_MESSAGEParsing Systemprotokolldatei mit Schwein
|1 | |2 | |3 | |4 | |5 |
09-15-16 05:23:45 B:VVBN 09064 Port 22 Device 10400 Remote 44 13331 Link Up RP2016
09-15-16 05:23:44 A:QAWE 09064 Port 22 Device 10400 Remote 44 13331 Link Up RP2016
09-15-16 05:23:44 B:VVBN 13425 Port 22 Device 10400 Remote 44 13331 Receive Time Error: 24666 23270 1396 69
09-15-16 05:23:43 B:QAWE 13372 Port 22 Device 10400 Remote 44 13331 Send Time Error: 444 1888 1444 69
09-15-16 05:23:43 A:VVBN 13425 Port 22 Device 10400 Remote 44 13331 Receive Time Error: 24666 23270 1396 69
09-15-16 05:23:43 A:CCBE 13372 Port 22 Device 10400 Remote 44 13331 Send Time Error: 444 1888 1444 69
09-15-16 05:21:56 B:VVBN 07270 Port 22 Device 10400 Remote 44 13331 AT Timer Expired
09-15-16 05:21:56 A:CCBE 07270 Port 22 Device 10400 Remote 44 13331 AT Timer Expired
hier ist mein Skript
logs = LOAD '/data/test_log.txt' USING PigStorge(' ') AS (date: chararray, time: chararray, task: chararray, line_error: int, error_message: chararray);
date = GROUP logs BY date;
counts = FOREACH date GENERATE COUNT($4) as count;
DUMP counts;
Mitteilung gibt es einen Abstand zwischen den Spalten nur gibt es fünf Räume zwischen 3 und 4 Spalten. Ich habe das Skript oben versucht, aber es funktioniert nur gut für das Datum nicht für die letzte Spalte Error_message. Ich versuche, diese Ausgabe Tasche zu bekommen:
(09-15-16,05:23:45,B:VVBN,09064,Port 22 Device 10400 Remote 44 13331 Link Up RP2016)
(09-15-16,05:23:44,A:QAWE,09064,Port 22 Device 10400 Remote 44 13331 Link Up RP2016)
:
:
ich ihnen 5.
Jeder Vorschlag in einer Spalte müssen nur die ersten vier Spalten alle anderen Spalten in der Protokolldatei prüfen, mischen die gewünschte zu erhalten Ausgabe.
Nuulu dankt dem Problem Ich bin nicht vertraut mit Regex und das, was mich hält. – Alsphere