【发布时间】:2014-01-05 13:17:36
【问题描述】:
是否可以使用 MapReduce 实现归并排序算法? 我对此持怀疑态度,因为映射器或化简器无法相互通信,但有人告诉我这是 MapReduce(??)的关键用例之一。 我正在寻找任何实现,甚至是如何做到这一点的线索,但我找不到任何东西。 我自己对如何做到这一点一无所知... 有什么想法吗?
@编辑 是的。我知道 MapReduce 具有开箱即用的排序功能。 例如,是否可以将其关闭?
【问题讨论】:
是否可以使用 MapReduce 实现归并排序算法? 我对此持怀疑态度,因为映射器或化简器无法相互通信,但有人告诉我这是 MapReduce(??)的关键用例之一。 我正在寻找任何实现,甚至是如何做到这一点的线索,但我找不到任何东西。 我自己对如何做到这一点一无所知... 有什么想法吗?
@编辑 是的。我知道 MapReduce 具有开箱即用的排序功能。 例如,是否可以将其关闭?
【问题讨论】:
归并排序是 MapReduce 在 map 和 reduce 函数是单位函数时所做的。查找 Terasort 基准以查看更多详细信息。
【讨论】:
归并排序是mapreduce的默认特性,不需要实现,也不能改变mapreduce的排序方式,因为数据来自不同的节点到一个点,所以这里可以使用的最佳算法是归并排序。什么否则,您可以指定自己的比较器类以升序或降序对键进行排序。
job.setSortComparatorClass(YourClass.class);
【讨论】: