Шаг Reduce не предназначен для удаления дубликатов (хотя в некоторых ситуациях это возможный вариант использования). Редукция предназначена для агрегирования выходов различных картографов с одним и тем же ключом.
Например, в примере подсчета слов узел 1 может получить 10 экземпляров слова, скажем, "школа", а узел 2 может иметь 15 экземпляров, узел 3 - 12 экземпляров. Как будет рассчитываться сумма? Результаты 10, 15 и 12 находятся на разных узлах. Существует фаза тасования, которая переносит все эти значения на один узел (который представляет собой редуктор, выделенный разделителю для ключа "school"). Тогда у редуктора будут все значения для этого ключа, и он может суммировать их.
РЕДАКТИРОВАТЬ: Как упоминал Тудор, под агрегацией я подразумеваю агрегацию в более общем смысле "объединения"
РЕДАКТИРОВАТЬ 2: Чтобы прояснить сомнения RaffiM:
Продолжая приведенный выше пример, скажем, в узле 1 были страницы 1-10, в узле 2 - страницы 11-20, а в узле 3 - страницы 21-30. Итак, после фазы Мао мы знаем, что на страницах 1-10 слово «школа» встречается 10 раз, на страницах 11–20 это слово появляется 15 раз, а также 15 раз на страницах 21–30. Теперь нам нужно общее количество раз, когда слово появляется во всей книге, поэтому нам нужно все же добавить их. Нам нужно 10 + 15 + 12 + цифры для других диапазонов страниц ...
Если вы не используете объединитель, картограф просто отправляет «1» при каждом появлении слова. Таким образом, для страниц 1-10 он будет отправлять <"school", 1> как значение ключа вывода 10 раз. Чтобы сделать его более эффективным, мы используем сумматор, который суммирует его на уровне картографа. Поэтому, если вы используете комбинатор, он будет использовать его в самом узле 1 и сгенерирует консолидированный вывод <"school", 10> для узла 1.