如何在元组中订购商品?

时间:2013-10-09 20:35:08

标签: hadoop apache-pig

我有一对数字,我想对它们进行排序。

grunt> dump unordered
(11,22)
(88,33)
(55,66)

如何对它们进行排序: (11,22) (33,88) (55,66)

试图用袋子: 咕噜> bag_of_pairs = foreach unordered生成TOBAG(TOTUPLE($ 0),TOTUPLE($ 1)); 咕噜> ordered = foreach bag_of_pairs {o1 =订单$ 0 by $ 0;生成o1;}

最终得到了这个有序但过度包装的列表,我不知道如何简化:

grunt> dump ordered
({(11),(22)})
({(33),(88)})
({(55),(66)})

由于

1 个答案:

答案 0 :(得分:1)

您需要UDF才能将广告素材转换为元组。但是,由于您只需要订购两件商品,因此也可以使用bincond

ordered = FOREACH unordered GENERATE ($0<$1?$0:$1), ($0<$1?$1:$0) ;

注意:我现在无法测试,但这也应该有效。

ordered = FOREACH unordered GENERATE FLATTEN(($0<$1?($0,$1):($1,$0)) ;