Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 使用Map和Reduce技术进行排序_Algorithm_Sorting_Mapreduce - Fatal编程技术网

Algorithm 使用Map和Reduce技术进行排序

Algorithm 使用Map和Reduce技术进行排序,algorithm,sorting,mapreduce,Algorithm,Sorting,Mapreduce,给定一个庞大的整数数据集,使用map和reduce技术与传统的排序算法(如quicksort和mergesort)相比有什么优势?我没有弄错,但MapReduce实际上使用了排序算法(如quicksort和mergesort)对reduce步骤的输入进行排序。MapReduce不是一种新的排序算法,它只是一种处理数据的方法。按照排序的步骤,这只是一个很好的副作用。Map/reduce或多或少只是描述并行计算的一种(可伸缩的、通用的)方式。因此,如果您想将传统的排序算法,如mergesort或qu

给定一个庞大的整数数据集,使用map和reduce技术与传统的排序算法(如quicksort和mergesort)相比有什么优势?

我没有弄错,但MapReduce实际上使用了排序算法(如quicksort和mergesort)对reduce步骤的输入进行排序。MapReduce不是一种新的排序算法,它只是一种处理数据的方法。按照排序的步骤,这只是一个很好的副作用。

Map/reduce或多或少只是描述并行计算的一种(可伸缩的、通用的)方式。因此,如果您想将传统的排序算法,如mergesort或quicksort,表示为map/reduce,如果您想将其作为并行计算


这不是“map/reduce是否比mergesort或quicksort更好”的问题,因为map/reduce只是一个并行实现排序算法(如mergesort或quicksort)的工具。

感谢您的回复。我想知道,由于我们可以直接对数据应用快速排序或合并排序,处理过程如何加快数据的排序。直到数据集太大,单台机器无法处理为止。或者您希望在此过程中进行额外的处理,例如映射步骤中的过滤器元素或减少步骤中的分组。mergesort还不够吗?我们可能会分割数据集,在分布式机器上对它们进行排序,然后合并收集的结果?当然,MapReduce并不像我已经说过的那样是一种排序算法。这只是一个很好的副作用。实际上,MapReduce正在做与您所遇到的相同的事情,它需要大小相等的拆分并将其分发,它们将被排序,在reduce步骤开始之前,整个集合将被合并。(如果有多个reduce,则会进行分区)但是在映射和分区方面会有额外的开销。也许这会有所帮助,也就是说,“并行”进行排序确实会有很大的开销,这在很大程度上取决于并行化的方式和精确的实现。当然,对于较小的输入大小,只需按顺序操作将是最好的,但“小”的定义因您的方法而异。(一台机器上有多个处理器?分布在世界各地的分布式计算?)