这似乎应该是一件简单的事情,但我不确定该怎么做。在pig中执行分组后,我只需要包中的数字元素(即删除组/键元素),这样我就可以对数值求和。那么,我该怎么做呢:
(Key1, {(Key1, 10}) (Key2, {(Key2, 5), (Key2, 15)})
对此:
(Key1, {(10}) (Key2, {(5), (15)})
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)})
1条答案
按热度按时间gojuced71#
如果要基于每个键对值求和,请使用以下方法
输入文件
Pig手稿:
输出:
如果你只想把这些值放在袋子里,那么用这个替换上面的“c”。
输出: