hadoop pig排序结果;查找订单位置?

pgvzfuti  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(251)

我想对我的pig结果进行排序,然后能够确定某些项目在我的排序结果中的位置。例子:

mydata = LOAD 'mydata.txt' AS (label:chararray, rank_score:float);
ranked_data = ORDER mydata BY rank_score DESC;
ranked_positions = FOREACH ranked_data GENERATE label, AUTO_INCREMENT_ID;
results = FILTER ranked_data BY label = 'item1' OR label='item2';
DUMP results;
``` `AUTO_INCREMENT_ID` 会在我的完美世界里自动增值。考虑到Map器/还原器是如何相互独立的,我猜pig/hadoop可能不支持这一点。如果没有,你能想出另一种方法来产生我的最终结果吗?
输入示例:

item1 34.33
item2 48.39
item3 93.3

期望输出:

item1 3
item2 2

xyhw6mcr

xyhw6mcr1#

如果将“顺序并行度”设置为1,则可以在自定义项中自动递增;当然,这可能会产生不希望的效果,只使用1个reducer进行排序。
(另外,我不确定您是如何得到示例输出的——输入似乎已经排序,所以item1应该有id 1,item2应该有id 2,对吗?你的意思是按等级排序吗?)

相关问题