2013-02-01 51 views
2

Apache Pig是否支持UNGROUP操作?我想没有。那么,有没有人能帮助我解决这个问题? 我有一个排的形式Apache Pig中的UnGroup

1,a-b-c 
2,d-e-f 
3,g-h 

的,我想它扩大到形式

1,a 
1,b 
1,c 
2,d 
2,e 
2,f 
3,g 
3,h 

赞赏任何帮助。

回答

4

您应该使用内建的STRSPLIT将第二个字段拆分为多个标记,然后应用FLATTEN为每个元素创建1行。事情是这样的:

A = LOAD 'input.txt' as (id, data); 

B = FOREACH A GENERATE id, FLATTEN(STRSPLIT(data,'-')); 
+0

STRSPLIT返回一个元组,而不是一个包,它不会转动数据值入行,你将最终获得相同数量的元组作为输入数据。为了得到你想要的结果,请看看http://stackoverflow.com/questions/12549842/pig-convert-text-lines-to-sparse-vector/12568662#12568662 – alexeipab

+2

刚刚尝试过,它工作。将空格替换为' - '而不是TOKENIZE,因为它会返回一个BAG,在FLATTEN之后它会创建旋转的行。 B = FOREACH A GENERATE ID,FLATTEN(TOKENIZE(REPLACE(data,' - ',''))); – alexeipab