Hadoop: разница между 0 редуктором и редуктором идентичности?

Я просто пытаюсь подтвердить свое понимание разницы между редуктором 0 и редуктором идентичности.

  • 0 редуктор означает, что шаг уменьшения будет пропущен, а вывод карты будет окончательным.
  • Средство уменьшения идентичности, тогда перетасовка/сортировка все равно будут иметь место?

Ответ 1

Вы понимаете правильно. Я бы определил его следующим образом: Если вам не нужна сортировка результатов карты - вы устанавливаете 0, а задание называется только картой.
Если вам нужно отсортировать результаты сопоставления, но не нужно какой-либо агрегации, вы выбираете редуктор идентичности.
И для завершения картины у нас есть третий случай: нам нужна агрегация, и в этом случае нам нужен редуктор.

Ответ 2

Другим вариантом использования Identity Reducer является объединение всех результатов в выходные файлы. Это может быть удобно, если вы используете Amazon Web Services для непосредственного написания на S3, особенно если вывод карты слишком мал (например, grep/search for record), и у вас много карт (например, 1000).

Ответ 3

Это зависит от ваших бизнес-требований. Если вы делаете wordcount, вы должны уменьшить свой вывод карты, чтобы получить общий результат. Если вы просто хотите изменить слова на верхний регистр, вам не нужно уменьшать.

Ответ 4

Основное различие между "Нет редуктора" (mapred.reduce.tasks = 0) и "Стандартный редуктор", которое является IdentityReducer (mapred.reduce.tasks = 1 и т.д.), - это когда вы используете "Нет редуктора", нет разделов и усилителей, перемешивание процессов после стадии MAP. Поэтому в этом случае вы получите "чистый" вывод от ваших карт без дальнейшей обработки. Это помогает в разработке и отладке щенков, но не только.