0

我试图用猪做一个总结操作。

例如,我有一个名为t3

product price   country

A   5   Italy

B   4   USA

C   12  France

A   5   Italy

B   7   Russia

我需要使用 2 个键进行汇总操作:productcountry.

  1. 我做连接操作,使用productcountry
  2. 我必须计算价格,在CONCAT结果重复的地方总结价格值
  3. 如果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');

也许有人可以解释如何达到预期的结果?提前非常感谢!

4

1 回答 1

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)
于 2013-10-25T09:43:09.610 回答