2014-06-27 56 views
0
压扁元组

我在下面的格式已经数据:

(ID,描述)

1,xyz是什么。美国广播公司bcd &等。

1,xyz是东西。 Abc xyz &等。

2,abc是东西。 Abc xyz &等。

我需要按此格式输出:

标识,Word中

我尝试这样做:

A = LOAD './data.txt' USING PigStorage( '')作为(ID :int,desc:chararray); B = FOREACH A GENERATE ID,FLATTEN(STRSPLIT(desc,'[,?:; \ s]'));

这导致输出像这样:

1,XYZ,就是什么东西,ABC,BCD,所以,在

我要的是:

1,XYZ

1,是

1,什么

等等等等。

我该如何在猪身上做(无需编写UDF)?

PS:还试图:

B = FOREACH甲GENERATE ID,FLATTEN(datafu.pig.util.TransposeTupleToBag(STRSPLIT(DESC, '[&。,:;?\ S]')));

回答

0

你可以在猪中使用Tokenize。请在下面找到答案。

下面是输入文件

猫file1的

1,xyz是东西

2,ABC是东西

A =负载 '的file1' 使用PigStorage( '') ; B = foreach A生成$ 0,FLATTEN(TOKENIZE($ 1));其中,

转储乙

(1,XYZ)

(1,是)

(1,某物)

(2,ABC)

(2,是)

(2,东西)