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. Поэтому в этом случае вы получите "чистый" вывод от ваших карт без дальнейшей обработки. Это помогает в разработке и отладке щенков, но не только.