Sorting 猪的等级和一般顺序的保存
在以下代码中:Sorting 猪的等级和一般顺序的保存,sorting,apache-pig,Sorting,Apache Pig,在以下代码中: dsBodyStartStopSort = order dsBodyStartStop by terminal_id, point_date_stamp, point_time_stamp, event_code ; dsBodyStartStopRank = rank dsBodyStartStopSort ; store dsBodyStartStopSort into 'xStartStopSort.csv' using PigStorage(';') ;
dsBodyStartStopSort =
order dsBodyStartStop
by terminal_id, point_date_stamp, point_time_stamp, event_code
;
dsBodyStartStopRank =
rank dsBodyStartStopSort
;
store dsBodyStartStopSort
into 'xStartStopSort.csv'
using PigStorage(';')
;
我知道,如果我不在中间做排序,排序顺序就会进入存储命令。这是猪的保证
从我所做的测试中可以看出,排名并不会扰乱排序顺序,但这能保证吗?我不想只是靠运气
更一般地说,一旦完成排序,Pig保存排序的规则是什么?是不是直到某个reduce事件发生?它能跨过滤器工作吗?当然不是团体?我只是想知道是否有一套定义良好的规则来规定清管器何时以及如何保证或不保证订单
概括地说:1.排名是否保持顺序?2订单一般是如何保存的?我在这个主题上找到的最好的文档: 除非您通过以下方式明确应用嵌套订单,否则行李将被打乱 操作如下所示。嵌套的FOREACH将保留 排序,允许您按一个字段组合排序,然后进行项目 只输出要连接的值 通过查看非官方的例子和评论,我得出以下结论: 如果你在一个等级之前做了一个命令,它应该保留这个命令。就我个人而言,我更喜欢使用a、b、c的排名xxx;只有在真正需要时才使用订单。 若你们在限价前下订单,那个么它应该在限价前加上最上面的几行。但是,输出将被排序,而不是按原始顺序排序。
进一步运行表明DISTINCT将创建订单。我有一个连接,我知道它打破了顺序,但如果我做了一个不同的,输出是有序的。但是,我再次尝试查找保证此订单始终存在的文档。没有找到任何关于订单是否通过过滤器持续存在的信息。考虑在过滤器之前添加一个等级,然后再按等级排序,或者你可以订购两次,我不认为它会影响性能。