在Reduce之后对输出文件进行排序



例如,我正在使用mapreduce对单词进行计数,并且我希望输出文件将按照单词的出现次数进行排序。例如:

one two two three three three four four four four

的输出将是:

four 4
three 3
two 2
one 1

我该怎么做呢?

一种方法是通过添加一个额外的map-reduce步骤来进行"Secondary Sort"。

  1. 映射简单地创建用于排序的键。
  2. 然后shuffle/sort阶段进行排序。
  3. reducer只是输出排序的结果。

HTH

最简单的方法是:

  1. 按您想要的方式排序每个单独的减速器输出。所以,例如,如果你使用流媒体和Python来运行你的作业,在Hadoop 0.21.0中,你可以指定这个作为你的reducer: -reducer "myReducer.py | sort -k 2 -r"
  2. 当您的工作完成时,合并排序所有的reducer输出文件。因为减速器的输出都是排序的,所以本质上就是归并。因此,例如,在您从HDFS本地(hadoop dfs -get myWordCountResults/part* ./results/)复制所有文件后,您可以运行sort -m ./results/part* > sortedOutput.txt

相关内容

  • 没有找到相关文章

最新更新