2016-10-16 2 views
1

Ich bin Laden eine Datei in Schwein mit Trennzeichen wie ‚^ A^E^A‘Wie mit mehr als einer Abfrage Begrenzer

ich unter Befehlsdaten in den Schweinen laden sie arbeiten jedoch versucht werden, nicht.

data = LOAD 'test.txt' USING PigStorage('\u0001\u0005\u0001') AS (user, time, query); 

Habe ich etwas übersehen? oder Gibt es eine Möglichkeit, den obigen Begrenzer direkt mit PigStorage anzugeben? Wie?

Danke.

Antwort

0

Ich glaube, PigStorage wird nicht mehr als ein CTRL-Trennzeichen unterstützen, Sie müssen möglicherweise UDF schreiben, um dies zu erreichen.

2

laden die Daten als Linie: chararray

Ersetzen '\ U0001 \ u0005 \ U0001' mit einem '|' oder ','

Teilen Sie die resultierende Zeile mit dem '|' oder ',' um die erforderlichen Spalten zu erzeugen.

data = LOAD 'test.txt' as (line:chararray); 
clean_data = foreach data generate REPLACE(line,'\\u0001\\u0005\\u0001','|'); 
new_data = foreach clean_data generate SPLIT(clean_data.$0,'|'); 
0

Datei_Daten = LOAD 'thedata.csv' VERWENDUNG TextLoader(); Cleansing_Data = FOREACH File_Data GENERATE ERSETZEN ($ 0, '\ u0001 | \ u0005 \ | \ u0001', ''); STORE Cleansing_Data INTO 'tmp/Cleansing_Data.txt' VERWENDUNG von PigStorage(); Final_Data = LOAD 'tmp/Cleansing_Data.txt' VERWENDUNG von PigStorage (',') AS (Benutzer, Zeit, Abfrage);

Verwandte Themen