我们正在从一个看起来像这样的文件中读取。
10036300 2
10034189 5
10035536 1
10035564 3
我们需要做两件事:
1 - 按右列排序
2 - 剔除前 3 个结果
所以它看起来像这样:
10034189 5
10035564 3
10036300 2
我该怎么做呢?
只需使用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)为了获得前 3 个结果,最好在 Mapper 中将所有值写入一个键下:
context.write(NullWritable.get(),value);
在 Reducer 中,您只能获取前三个结果并跳过其他结果。
2)现在你所要做的,它的排序值,请通过“Hadoop二次排序”搜索,其中描述了SortComparator,例如http://www.bigdataspeak.com/2013/02/hadoop-how-to-do-二级排序on_25.html