从包中删除组元素

xqkwcwgp  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(275)

这似乎应该是一件简单的事情,但我不确定该怎么做。在pig中执行分组后,我只需要包中的数字元素(即删除组/键元素),这样我就可以对数值求和。
那么,我该怎么做呢:

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

对此:

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

gojuced71#

如果要基于每个键对值求和,请使用以下方法
输入文件

key1,10
key2,5
key2,15

Pig手稿:

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)})

相关问题