为什么要排序map reduce中生成的中间键?

时间:2013-12-13 15:58:57

标签: hadoop mapreduce

我理解为什么中间键值按键分组,但为什么要对它们进行排序?

2 个答案:

答案 0 :(得分:1)

这就是它实现分组的方式。按键排序时,它们会组合在一起。它的排序真的无关紧要......唯一重要的是相同的键是紧挨着的。

排序可能不是最好的方法。也许某种散列会更快:O(N)而不是O(NlogN)。它被实现为排序只是因为有些应用程序需要排序键(例如HBase / BigTable)。

最近开发了一种可插拔排序,并且可以在测试版中使用。我还没有机会尝试一下。 http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/PluggableShuffleAndPluggableSort.html

答案 1 :(得分:1)

根据Google's Paper on MapReduce

  

我们保证在给定分区内,按增加的键顺序处理中间键/值对。这种排序保证可以很容易地为每个分区生成一个排序的输出文件,这在输出文件格式需要通过键支持有效的随机访问查找时很有用,或者输出的用户发现将数据排序很方便。

Hadoop已根据Google的论文实施。并非所有算法都需要对数据进行排序。在Hadoop中可以插入排序,可以使用替换。更多信息here