我试图用猪做一个总结操作。
例如,我有一个名为t3
的表:
product price country
A 5 Italy
B 4 USA
C 12 France
A 5 Italy
B 7 Russia
我需要使用2个密钥进行汇总操作:product
和country
。
product
和country
CONCAT
结果重复的价格值CONCAT
结果不重复的地方,价格与t3
表中的价格相同。预期产出可能是:
CONCAT Price_1
AItaly 10
BUSA 4
CFrance 12
BRussia 7
在猪中我写下面的脚本(代码错了,但只是为了表明一个想法):
t3 = LOAD '/home/Desktop/3_table/3_table.data' AS (product:chararray, price:int, country:chararray);
c1 = FOREACH t3 GENERATE CONCAT(product, country);
c2 = FOREACH t3 GENERATE *, c1;
product_1 = GROUP c2 BY c1;
price_1 = FOREACH product_1 GENERATE group, SUM(product_1.price);
STORE price_1 INTO 'summarise_by_2_ID' USING PigStorage('\t');
也许有人可以解释如何达到预期的结果? 非常感谢提前!
答案 0 :(得分:0)
如果要计算每个产品和国家/地区的总和,则不需要使用concat函数。只按这两个字段分组。
A = LOAD 's.txt' USING PigStorage('\t') AS (product:chararray, price:int, country:chararray);
B = GROUP A BY (product, country);
C = FOREACH B GENERATE CONCAT(group.product,group.country), SUM(A.price);
实际上,这里不需要concat,只是按预期格式化输出。
DUMP C
(AItaly,10)
(BUSA,4)
(BRussia,7)
(CFrance,12)