2016-03-25 9 views
0

Hallo allerseits ich ein Problem über das Laden von Daten unter Verwendung von Apache-Schwein habe, das Dateiformat wie:
Apache Schwein Lastdaten mit mehreren Trennzeichen

"1","2","xx,yy","a,sd","3" 

So mag ich es laden, indem Sie die mehrere Trennzeichen "," 2Doppelklicken Zitate und ein Komma wie:

A = LOAD 'file.csv' USING PigStorage('","') AS (f1,f2,f3,f4,f5); 

aber die PigStorage nicht akzeptieren, die mehrere Begrenzer "," .Wie kann ich es tun? Vielen Dank!

Antwort

0

PigStorage benötigt ein einzelnes Zeichen als Trennzeichen. Sie müssen eingebaute Funktionen von verwenden. Laden Sie piggybank.jar herunter und speichern Sie sie im selben Ordner wie Ihr Schweineschrift. Registrieren Sie das Glas in Ihrem Schweineschrift.

REGISTER piggybank.jar; 

DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader(); 

A = LOAD 'test1.txt' USING CSVLoader(',') AS (f1:int,f2:int,f3:chararray,f4:chararray,f5:int); 
B = FOREACH A GENERATE f1,f2,f3,f4,f5; 
DUMP B; 

Alternative Option ist es, die Daten in eine Linie zu laden und verwenden Sie dann STRSPLIT

A = LOAD 'test1.txt' USING TextLoader() AS (line:chararray); 
B = FOREACH A GENERATE FLATTEN(STRSPLIT(line, '","')); 
DUMP B;