0

我们正在从一个看起来像这样的文件中读取。

10036300 2

10034189 5

10035536 1

10035564 3

我们需要做两件事:

1 - 按右列排序

2 - 剔除前 3 个结果

所以它看起来像这样:

10034189 5

10035564 3

10036300 2

我该怎么做呢?

4

2 回答 2

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;
于 2013-11-05T15:47:46.700 回答
1

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

于 2013-11-05T16:06:07.387 回答