2016-08-30 6 views
0

Ich bin neu in Schweinlatein und ich versuchte, dieses Schema auf meinen Daten,Nicht die ouptut immer nach definierten Schema in Apache Pig

A = LOAD 'data' USING PigStorage(',') AS (f1:int, f2:int, B:bag{T:tuple(t1:int,t2:int)}); 

Meine Beispieldaten sind

10,1,{(2,4),(5,6)} 
10,3,{(1,3),(6,9)} 

Bei der Durchführung \ d A der Ausgang auf meinem Terminal ist:

Bitte sagen Sie mir, was mache ich falsch.

Antwort

0

Die Beispieldaten, die Sie haben, haben nicht das richtige Format. Ihre Ladeanweisung verwendet ',' als Feldtrennzeichen. Die Tupel in der Tüte sind jedoch ebenfalls durch 'getrennt' und die Daten werden daher nicht korrekt geladen .

Eine Möglichkeit, dies zu beheben, ist ein anderes Trennzeichen für die Felder zu wählen.Zum Beispiel Tabulator, Pipe, Semikolon.

Verwendung von Tabs als Feldtrennzeichen und das Komma als Tupel Separator

10 1 {(2,4),(5,6)} 
10 3 {(1,3),(6,9)} 

Script für Tabulator getrennte Felder mit dem Schema

A = LOAD 'test8.txt' using PigStorage('\t') AS (f1:int, f2:int, B:bag{T:tuple(t1:int,t2:int)}); 
DUMP A; 

Ausgabe

enter image description here

Alternativ können Sie Laden Sie die Beispieldaten ohne Spezifische die Felder ying

10,1,{(2,4),(5,6)} 
10,3,{(1,3),(6,9)} 

Script für Last ohne Schema, aber mit '' als Feldtrenn

A = LOAD '/test8.txt' USING PigStorage(','); 
DUMP A; 

Ausgabe

enter image description here