2016-09-30 3 views
0

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.

Antwort

0

Sie müssen MyRegExLoader von piggybank verwenden, um benutzerdefinierte Protokolldateien zu verarbeiten.

logs = LOAD '/data/test_log.txt' USING org.apache.pig.piggybank.storage.MyRegExLoader ('provide the regex '); 
+0

Nuulu dankt dem Problem Ich bin nicht vertraut mit Regex und das, was mich hält. – Alsphere