Hadoop Сортировать карту и уменьшить значение ключа - PullRequest
0 голосов
/ 06 октября 2011

Если бы у меня был файл со случайными целыми числами в каждой строке, и я хотел отсортировать файл с помощью Hadoop, каковы были бы ключ и значение ввода / вывода моего преобразователя и преобразователя?

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Yahoo имеет отсортированных байт данных Peta и Tera. Другие (в том числе Google ) делают это на регулярной основе, вы можете искать критерии сортировки в Интернете. Yahoo опубликовала статью о том, как они это сделали.

Пакет 'org.apache.hadoop.examples.terasort' содержит пример кода для сортировки данных.

Более подробную информацию можно найти в блоге Cloudera здесь . Для упрощения сортировки есть несколько встроенных классов.

Всего заказов на разделы HADOOP-3019 . В дополнение к записи TeraSort, Hadoop теперь имеет библиотечные классы для эффективного вывода глобально отсортированного вывода. InputSampler используется для выборки подмножества входных данных, а затем TotalOrderPartitioner используется для разделения выходных данных карты на приблизительно равные по размеру разделы. Очень аккуратный материал - стоит посмотреть, даже если вам не нужно его использовать.

Вы также можете найти больше информации здесь .

0 голосов
/ 08 октября 2011

Более теоретический ответ: рассмотрим различные алгоритмы сортировки (быстрая сортировка, сортировка слиянием, пузырьковая сортировка и т. Д.).

Из-за того, что мы знаем, что вы можете объединить два отсортированных списка за линейное время, распараллелить любой алгоритм сортировки довольно просто, поместив шаг «слияния» поверх него. Таким образом, существует множество вариантов, которые вы можете использовать для выполнения этой задачи.

Однако терасорт гораздо умнее этого, потому что простое расщепление и слияние не решат всех ваших проблем ... Ваш последний шаг "слияния" соответствует значительному шагу сокращения, когда у вас много расщеплений.

...