Использует ли потоковая передача Hadoop стабильную сортировку между фазами отображения и сокращения?

Это имеет последствия для многоэтапных заданий. Например, если мы сортируем по ключу «a» в фазе 1 задания и по ключу «b» в фазе 2 задания (которая принимает вывод фазы 1 как стандартный ввод), можем ли мы предположить, что по завершении двух фаз записи отсортированы по ключу "б" и вторично по ключу "а"? Для целей этого вопроса предположим, что преобразователи и редьюсеры не меняют порядок записей. Также предположим, что количество задач сокращения равно 1 или более.

Имейте в виду, что ответ может варьироваться в зависимости от количества задач сокращения для фазы 1. Например, если бы количество задач сокращения для фазы 1 было больше 1, ключ a был бы разделен на несколько файлов (хотя и в отсортированном порядке с относительно каждого файла). Однако, когда есть только одна задача сокращения, все значения будут отображаться в одном и том же файле, и это может быть необходимым условием для стабильности, в зависимости от реализации.

Если ответ утвердительный, ссылка на соответствующую документацию будет наиболее полезной.

Спасибо,

SetJmp


person Setjmp    schedule 20.12.2011    source источник


Ответы (1)


По умолчанию Hadoop не будет применять желаемые вами стабильные свойства сортировки.

У потоковой передачи Hadoop есть Comparator и Partitioner, которые помогают сортировать результаты с карты на уменьшение; посмотрите здесь

Изменить: обновлена ​​битая ссылка

person Arnon Rotem-Gal-Oz    schedule 20.12.2011