猪拉丁语怎么做'总结'?

时间:2013-10-25 08:52:05

标签: sum apache-pig acl

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

例如,我有一个名为t3的表:

product price   country

A   5   Italy

B   4   USA

C   12  France

A   5   Italy

B   7   Russia

我需要使用2个密钥进行汇总操作:productcountry

  1. 我使用productcountry
  2. 连接操作
  3. 我必须计算价格,总结CONCAT结果重复的价格值
  4. CONCAT结果不重复的地方,价格与t3表中的价格相同。
  5. 预期产出可能是:

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

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

1 个答案:

答案 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)