通过RANK和一般的猪订单保存

时间:2015-04-13 13:34:36

标签: 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(';')
;

我知道如果我在中间执行RANK,排序顺序将进入STORE命令。这是猪的保证。

从我做过的测试中可以看出,做RANK会使搞乱排序顺序 - 但保证吗?我不想只是运气好。

更一般地说,猪一旦完成后保留排序的规则是什么?是否会发生一些减少事件?它会在FILTER上运行吗?当然不是GROUP?只是想知道是否有关于猪何时以及如何保证或不保证订单的明确规则。

总结:1)RANK的订单是否保留? 2)如何保留订单?

1 个答案:

答案 0 :(得分:0)

我在这个主题上找到的最好的文档:

  

除非您明确应用嵌套的ORDER BY,否则行李无序   操作如下所示。嵌套的FOREACH将保留   订购,让您按一个字段组合订购然后投影   只是你想要连接的值。

通过查看非官方的例子和评论,我得出以下结论:

  • 如果您在排名前订购,则应保留订单。就个人而言,我更喜欢只使用public function hookActionProductUpdate($params) { $product = $params['product']; $arrrs = $product->getFrontFeatures(1); pr($arrrs);die("No updating :("); } ,如果确实需要,我只会在之后使用ORDER。
  • 如果您在LIMIT之前订购,它应该向LIMIT提供顶线。但是输出将按原始顺序排序而不是按原始顺序排列。