我们正在从一个看起来像这样的文件中读到。
10036300 2
10034189 5
10035536 1
10035564 3
我们需要做两件事:
1 - 按右栏排序
2 - 砍掉前3名结果
所以它看起来像这样:
10034189 5
10035564 3
10036300 2
我将如何做到这一点?
答案 0 :(得分:1)
只需使用Apache Pig:
A = load '/your/file/in/hdfs' using PigStorage(' ') as (num1:long, num2:long);
B = order A by num2 desc;
C = limit B 3;
dump C;
答案 1 :(得分:1)
1)要获得前3个结果,Mapper最好在一个键下写下所有值:
context.write(NullWritable.get(),value);
在Reducer中,您只能获得前三个结果并跳过其他结果。
2)现在您需要做的就是它的排序值,请按“Hadoop secondary sort”搜索,其中描述了SortComparator,例如http://www.bigdataspeak.com/2013/02/hadoop-how-to-do-secondary-sort-on_25.html