我想在列已经分组后对它们进行排序。我怎样才能做到这一点? 我的数据如下:
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)})
我想使用ORDER
在count_value
上订购next_link基础。
我把代码编写为:
B = FOREACH product_data {
field2_ord = ORDER next_link BY count_value;
GENERATE products, field2_ord;
};
答案 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;
你期待这种类型的代码吗?