2014-11-22 104 views
0

這似乎應該是一件簡單的事情,但我並不確定如何去做。在Pig中執行一個組後,我只需要包中的數字元素(即刪除組/鍵元素),以便可以對數值進行求和。Apache Pig從包中移除組元素

所以,我怎樣才能從這個去:

(Key1, {(Key1, 10}) 
(Key2, {(Key2, 5), (Key2, 15)}) 

要這樣:

(Key1, {(10}) 
(Key2, {(5), (15)}) 

回答

0

如果要總結基於每個鍵的值,然後用下面的方法

input.txt

key1,10 
key2,5 
key2,15 

Pigscript:

A = LOAD 'inpput.txt' USING PigStorage(',') AS(key:chararray,value:int); 
B = GROUP A BY key; 
C = FOREACH B GENERATE group,SUM(A.value); 
DUMP C; 

輸出:

(key1,10) 
(key2,20) 

如果你想只保留值內袋,然後替換這一塊上面的 'C'。

C = FOREACH B GENERATE group,A.value; 
DUMP C; 

輸出:

(key1,{(10)}) 
(key2,{(5),(15)})