我想对猪的结果进行排序,然后能够确定某些项目在我的订购结果中的位置。例如:
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
会在我完美的世界中自动增加。鉴于映射器/缩减器如何彼此独立,我猜测Pig / Hadoop可能不支持这一点。如果没有,你能想出另一种方法来产生我的最终结果吗?
示例输入:
item1 34.33
item2 48.39
item3 93.3
期望的输出:
item1 3
item2 2
答案 0 :(得分:1)
如果将ORDER的并行度设置为1,则可以在udf中自行增加;当然,这会产生仅使用1个reducer进行排序的潜在不良影响。
(另外,我不确定你是如何得到你的示例输出的 - 输入似乎已经订购了,所以item1应该有id 1而item 2应该有id 2,对吗?你的意思是按rank_score命令< EM>降序?)