Apache Pig从包中删除组元素

时间:2014-11-22 21:03:05

标签: apache-pig

这似乎应该是一件简单的事情,但我并不确定如何去做。在Pig中执行一个组后,我只想要包中的数字元素(即删除组/键元素),这样我就可以对数值求和。

那么,我怎么能这样做:

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

对此:

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

1 个答案:

答案 0 :(得分: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)

如果您只想保留包内的数值,那么请更换上面的&#39; C&#39;用这个。

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

<强>输出:

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