Сортировка выполняется структурой Hadoop MapReduce
.Мапперы выводят промежуточные пары (ключ, значение), которые передаются редукторам.Каждый редуктор получает все ключи в отсортированном порядке.
Иллюстрация :
Скажем, используются 2 картографа:
-- mapper1 output
key_a, value_a1
key_b, value_b2
key_c, value_c1
key_d, value_d2
-- mapper2 output
key_a, value_a2
key_b, value_b1
key_d, value_d1
key_d, value_d3
Сортировка и перемешивание (шаг сделанHadoop
Скажем, используются 2 редуктора:
--- reducer1 input (sorted by keys)
key_a, [value_a1, value_a2]
key_d, [value_d2, value_d1, value_d3]
--- reducer2 input (sorted by keys)
key_b, [value_b2, value_b1]
key_c, [value_c1]
Если вы хотите обеспечить глобальное упорядочение между переданными ключамидля редукторов вы можете использовать Total Order Partitioner .В этом случае каждый редуктор получит входные данные, как показано ниже:
-- reducer1 input (sorted by keys - global)
key_a, [value_a1, value_a2]
key_b, [value_b2, value_b1]
-- reducer2 input (sorted by keys - global)
key_c, [value_c1]
key_d, [value_d2, value_d1, value_d3]