在Apache Pig中排名

时间:2012-03-31 17:14:36

标签: apache-pig

在排序后,是否有一种很好的方法可以对Apache Pig中的列进行排名?如果排名处理关系,那就更好了。

A = LOAD 'file.txt' as (score:int, name:chararray);
B = foreach A generate score, name order by score;
....

4 个答案:

答案 0 :(得分:2)

尝试排名操作

A = load 'data' AS (f1:chararray,f2:int,f3:chararray);

DUMP A;
(David,1,N)
(Tete,2,N)
B = rank A;

dump B;
(1,David,1,N)
(2,Tete,2,N)

参考https://blogs.apache.org/pig/entry/apache_pig_it_goes_to

答案 1 :(得分:0)

我认为您可以使用“ORDER BY”运算符。这是link

B = ORDER A BY score DESC;

B = ORDER A BY score ASC;

答案 2 :(得分:0)

您应该使用两种解决方案的混合

B = ORDER A BY score DESC;
C = rank B;

让我们说你想要第二大

D = filter C by $0 == 2;

答案 3 :(得分:0)

您可以在PIG中使用Rank并且它也会处理绑定,但在应用排名时它只会使用一个reducer,因此性能会受到影响。