2016-05-12 11 views
0

Ich habe einen einfachen Schwein Job, der eine Spalte von Daten generiert. Um Leerzeilen aus der Ausgabe zu beseitigen, schrieb ich den folgenden Befehl ein:PIG erzeugt leere Zeilen

items = FOREACH inputs GENERATE item; 
items = DISTINCT items; 
items = FILTER items BY ($0 IS NOT NULL); 
items = FILTER items BY NOT IsEmpty(TOBAG($0)); 
STORE items INTO '$output/items'; 

Während ich versuche, NULL und leere Einträge zu beseitigen, habe ich noch leere Zeilen in den Ausgabedateien auf HDFS bekommen.

Es ist erwähnenswert, wenn ich die letzte Zeile (d.h. STORE) mit Ersetzen

DUMP items; 

Das Terminal Ausgang zeigt nicht die Leerausgangsleitung.

Alle Kommentare zur Ursache dieses Problems werden sehr geschätzt.

Antwort

0

Ich habe es selbst behoben.

Es stellt sich heraus, dass der Pig-Parser leer geparste Eingabe in eine neue Zeile verwandelt hat. So funktionierte das Folgende (siehe die dritte Zeile):

items = FOREACH inputs GENERATE item; 
items = DISTINCT items; 
items = FOREACH items GENERATE ($0=='\n'?NULL:$0); 
items = FILTER items BY ($0 IS NOT NULL) AND (NOT IsEmpty(TOBAG($0))); 
STORE items INTO '$output/items';