在云中对大量数据进行排序?

时间:2013-10-26 16:10:16

标签: sorting cloud distributed

如果云存储文件夹中包含1PB的数据,那么对所有数据进行排序的最快方法是什么?很容易对它的小块进行排序,但是然后将它们合并到更大的排序输出中需要更长的时间,因为在某些时候单个进程必须合并整个事物。我想避免这种情况,并且有一个完全分布式的解决方案,有办法吗?如果是这样,是否有适合用于在S3中对数据进行排序的实现?

2 个答案:

答案 0 :(得分:2)

由于您需要排序的数据量超过RAM(很多),唯一合理的方法(据我所知)首先对块进行排序然后将它们合并在一起。

Merge Sort是完成此任务的最佳方式。您可以使用并行进程同时对单独的数据块进行排序,这样可以加快排序速度。

问题是,在你完成排序块之后,你不必让单个进程完成所有的合并,你可以让几个进程同时合并不同的块:

  

该算法使用并行合并算法,不仅可以并行化数组的递归除法,还可以并行化合并操作。它结合了快速稳定的顺序排序(如插入排序)和快速顺序合并作为合并小数组的基本案例,在实践中表现良好。

这是一个link,它提供了更多关于合并算法的信息(以防万一)。

答案 1 :(得分:0)

坏消息 - 您无法避免多个已排序文件的k合并。 好的是你可以并行做一些操作。