如何对元组中的项进行排序?

qrjkbowd  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(252)

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

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

如何将它们排序为:(11,22)(33,88)(55,66)
尝试使用bags:grunt>bag_of_pairs=foreach unordered generate tobag(totuple($0),totuple($1));grunt>ordered=foreach bag\u of \u pairs{o1=order$0乘$0;生成o1;}
最后得到了一个有序的,但 Package 过度的列表,我不知道如何简化:

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

谢谢

j8ag8udp

j8ag8udp1#

您需要一个自定义项来将包转换为元组。但是,由于您只需要订购两件商品,因此也可以使用bincond来完成。

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

注意:我现在不能测试这个,但是这个应该也可以。

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

相关问题