如何用拉丁语“总结”?

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

我想用Pig做个手术。
例如,我有一个名为 t3 :

product price   country

A   5   Italy

B   4   USA

C   12  France

A   5   Italy

B   7   Russia

我需要使用两个键执行汇总操作: product 以及 country .
我使用 product 以及 country 我要计算价格,总结价格的价值就在哪里 CONCAT 结果重复
哪里 CONCAT 结果不会重复,价格仍与中相同 t3 table。
预期输出可能是:

CONCAT  Price_1
AItaly  10
BUSA    4
CFrance 12
BRussia 7

在pig中,我编写了以下脚本(代码是错误的,但只是为了展示一个想法):

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');

也许有人能解释如何达到预期的结果?提前多谢了!

w8biq8rn

w8biq8rn1#

如果要计算每个产品和国家的总和,则不需要使用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)

相关问题