2013-10-26 2 views
1

Учитывая папку облачного хранилища с 1ПБ данных в ней, какой бы быстрый способ сортировать все эти данные? Легко сортировать мелкие куски, но слияние их с более крупным сортированным выходом займет больше времени, так как в какой-то момент одному процессу придется объединить все это. Я хотел бы избежать этого и иметь полностью распределенное решение, есть ли способ? Если да, существует ли какая-либо реализация, которая подходит для использования для сортировки данных в S3?Сортировка большого количества данных в облаке?

ответ

2

Поскольку объем данных, необходимых для сортировки, превышает объем оперативной памяти (по большому счету), единственный разумный способ (насколько мне известно) состоит в том, чтобы сначала отсортировать куски, а затем объединить их вместе.

Merge Sort - лучший способ выполнить эту задачу. Вы можете сортировать отдельные фрагменты данных одновременно с параллельными процессами, что должно ускорить ваш вид.

Дело в том, после того, как вы сделали сортировку ломтей, вы не должны иметь единого процесса делает все слияния, вы можете иметь несколько процессов слияния различных кусков одновременно:

Этот алгоритм использует алгоритм параллельного слияния, чтобы не только распараллеливать рекурсивное деление массива, но и операцию слияния. Он хорошо работает на практике в сочетании с быстрой стабильной последовательной сортировкой, такой как сортировка вставки, и быстрое последовательное слияние в качестве базового случая для слияния небольших массивов.

Вот link, который дает немного больше информации об алгоритме слияния (на всякий случай).

0

Плохая новость - вы не можете избежать k-слияния нескольких отсортированных файлов. Хорошо, что вы можете выполнять некоторые операции параллельно.

Смежные вопросы