在以下代码中:
dsBodyStartStopSort =
order dsBodyStartStop
by terminal_id, point_date_stamp, point_time_stamp, event_code
;
dsBodyStartStopRank =
rank dsBodyStartStopSort
;
store dsBodyStartStopSort
into 'xStartStopSort.csv'
using PigStorage(';')
;
我知道如果我不在中间排序,排序顺序将进入store命令。这是Pig的保证。
从我所做的测试来看,排序并不会扰乱排序顺序——但这能保证吗?我不想只是靠运气。
更一般地说,Pig的规则是什么保存排序一旦它做了?直到某个事件发生?它能通过过滤器工作吗?当然不是团体?只是想知道是否有一套明确的规则,Pig何时和如何保证或不保证秩序。
总而言之:1)等级之间的顺序是否保持?2) 秩序一般是如何维持的?
1条答案
按热度按时间xdyibdwo1#
我在这个主题上找到的最好的文档:
除非按照下面的说明显式应用嵌套的order by操作,否则行李将被打乱。嵌套的foreach将保持顺序,允许您按字段的一个组合排序,然后只投影出要连接的值。
通过观察非官方的例子和评论,我得出以下结论:
如果你在一个等级之前做了一个命令,它应该保持这个命令。就我个人而言,我更喜欢
RANK BY a,b,c;
只有在真正需要的时候才使用命令。如果你在一个限制之前下订单,它应该用最上面的行输入限制。但是,输出将被排序,而不是按原始顺序。