我的数据格式如下:
(Id,Description)
1,xyz是东西。 Abc bcd&等等。
1,xyz是东西。 Abc xyz&等等。
2,abc是东西。 Abc xyz&等等。我需要这种格式的输出:
我,Word
我试过了:
A = LOAD'./ data.txt'使用PigStorage(',')as(id:int,desc:chararray);
B = FOREACH GENERATE id,FLATTEN(STRSPLIT(desc,'[,?:; \ s]'));
这导致输出如下:
1,xyz,是,某事,Abc,bcd,所以,在
我想要的是:
1,xyz
1,是
1,某事
等等。
如何在Pig(不编写UDF)中执行此操作?
PS:还试过:
B = FOREACH GENERATE id,FLATTEN(datafu.pig.util.TransposeTupleToBag(STRSPLIT(desc,'[。&,?:; \ s]')));
答案 0 :(得分:0)
你可以在猪中使用Tokenize。请找到以下答案。
这是输入文件
cat file1
1,xyz是
2,abc是
A =使用PigStorage(',');
加载'file1'B = foreach A产生$ 0,FLATTEN(TOKENIZE($ 1));
转储B
(1,XYZ)
(1,是)
(1,东西)
(2,ABC)
(2,是)
(2,东西)