基于hadoop框架的java排序算法

qqrboqgw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(267)

我在网上看了很多链接。这里有几个链接link1,link2。但我不能理解。他们到底在做什么。你能简单地解释一下这个算法吗。
是的,下一个问题,我有一个想法。告诉我这是对还是错。
算法-
在绘图员之间把整数除以。
Map器-所有Map器都使用基本方法(任何标准的排序算法,这里没有使用概念)。
当所有的Map绘制者都完成了他们的任务。创建一个最小堆,其节点数等于Map器数。使用这个最小堆对整个数据进行排序(使用最小堆(min-heap)方法可以很容易地对已排序列表的数量进行排序。
上述算法正确吗?

ua4mk5z4

ua4mk5z41#

是的,你是对的。
Map器使用快速排序和堆排序的混合排序。
还原器只对Map器的排序输出进行n路合并。

zdwk9cvp

zdwk9cvp2#

您提供的链接是为terasort提供的,因此我将尝试对其进行非常简短的解释。尽管另一个答案是正确的,因为一些hadoop排序算法使用了快速排序和-heapsort-mergesort的组合(我很确定你指的是mergesort,而不是heapsort)。
我想很简单,terasort是这样的:
假设我们要排序:
2346246 7245242 8212345 1324623 4356234 9323244
然后你不需要阅读整个记录来查看哪个数字是最大的,而只需要第一个数字。阅读时请记住这一点。
对数据进行采样以了解记录的分布情况—了解范围。
从每个记录中选择2个字节-可能是前2个字节(例如)
bucket根据这2个字节确保bucket是“有序的”,因此bucket n的记录都小于bucket n+1中的记录
对每个桶进行分类
塔达!你已经把数据整理好了。

相关问题