这似乎应该是一件简单的事情,但我并不确定如何去做。在Pig中执行一个组后,我只想要包中的数字元素(即删除组/键元素),这样我就可以对数值求和。
那么,我怎么能这样做:
(Key1, {(Key1, 10})
(Key2, {(Key2, 5), (Key2, 15)})
对此:
(Key1, {(10})
(Key2, {(5), (15)})
答案 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)})