如何在猪群中分组csv中的列?

时间:2014-08-29 09:10:15

标签: apache-pig

我想在列已经分组后对它们进行排序。我怎样才能做到这一点? 我的数据如下:

product,next_link,count_value
p1,p2,2
p1,p4,4
p1,p5,5
p2,p1,3
p2,p3,2
p3,p2,1
p3,p5,6
p3,p1,8
p4,p1,8
p4,p5,2
p5,p3,3
p5,p2,5
p5,p4,6
p5,p1,4

我使用这段代码对它们进行分组:

product_group = GROUP product_data BY products;
DUMP product_group;

输出结果为:

(p1,{(p1,p2,2),(p1,p4,4),(p1,p5,5)})
(p2,{(p2,p1,3),(p2,p3,2)})
(p3,{(p3,p5,6),(p3,p1,8),(p3,p2,1)})
(p4,{(p4,p5,2),(p4,p1,8)})
(p5,{(p5,p1,4),(p5,p3,3),(p5,p2,5),(p5,p4,6)})

我想使用ORDERcount_value上订购next_link基础。 我把代码编写为:

B = FOREACH product_data {
    field2_ord = ORDER next_link BY count_value;
    GENERATE products, field2_ord;
    };

2 个答案:

答案 0 :(得分:0)

如果要按count_value的顺序打印产品数据,则可以使用:

A = LOAD 'Product_data.csv' USING PigStorage(',') AS (product:chararray, next_link:chararray, count_value:int);
B = ORDER A BY count_value ASC;
C = FOREACH B GENERATE product, next_link;
DUMP C;

我希望这是预期的结果。

答案 1 :(得分:0)

请尝试以下代码:

a_input = LOAD 'Product_data.csv' USING PigStorage(',') AS (product:chararray, next_link:chararray, count_value:int);
B = GROUP (ORDER a_input BY count_value) BY next_link;

你期待这种类型的代码吗?