2016-03-25 26 views
0
ben apache domuz kullanarak veri yükleme hakkında bir sorun var

Herkese merhaba, dosya biçimi gibidir:apache domuz yük verileri

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


Yani birden sınırlayıcı kullanarak yüklemek istediğiniz "," 2double tırnak ve benzeri bir virgül: bunu yapabilen dan bahsederler

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

ama PigStorage birden sınırlayıcı "," kabul etmiyor? Çok teşekkür ederim!

cevap

0

PigStorage, tek karakteri sınırlayıcı olarak alır. 'dan yerleşik işlevler kullanırsınız. Piggybank.jar dosyasını indirin ve pigscript.tr ile aynı klasöre kaydedin.

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; 

Alternatif bir seçenek hattı veri yüklemek ve daha sonra kullanmak için STRSPLIT

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