如何对pig中不同表中的两个文件求和?

f5emj3cl  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(333)

表格示例:

A = LOAD 'data' AS (a1:int,a2:int);

DUMP A;
(1,2)
(1,3)
(2,2)
(3,4)
(3,1)

我得到了

A2 = GROUP A BY a1;

DUMP A2;
(1,{(1,2),(1,3)})
(2,{(2,2)})
(3,{(3,4),(3,1)})

B = LOAD 'data2' AS (b1:int,b2:int);
(1,4)
(2,3)
(3,2)

我想要的结果是

(1,{(1,6),(1,7)})
(2,{(2,5)})
(3,{(3,6),(3,3)})

也就是说,

FOREACH A2 GENERATE group,A.a2+B.b2

其中a.a1==b.b1,但误差显示:

Invalid scalar projection: B

有什么想法都可以,谢谢。

edqdpe6u

edqdpe6u1#

你可能需要先加入,然后添加,然后再分组。

joined_data = JOIN A by a1, B by b1;
summed_data = FOREACH joined_data GENERATE a1 as a1,a2+b2 as sum;
final_answer = GROUP summed_data by a1;

相关问题