Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Генерация соответствующего количества выходов редуктора

Автор вопроса: abhinavkulkarniОтветов: 2

Я запускаю простую карту и уменьшаю задание Hadoop. Свойство mapred.reduce.tasks установлено администратором Hadoop в файле mapred-site.xml. Допустим, это 25. Теперь моя работа создает только 4 разных ключа, поэтому только 4 из 25 файлов part-r-xxxx непустые, остальные - пустые файлы. Как предотвратить это? Мне нужно столько выходных файлов, сколько произведено ключей (которое я не знаю заранее).

Спасибо.

hadoopmapreduceoutput

Ответы

Ответ 1 · рейтинг 1 · Charles Menguy

Я бы посоветовал использовать LazyOutputFormat:

LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);

Это гарантирует, что ваши выходные файлы будут созданы только в том случае, если для этого редуктора есть фактические данные.

Ответ 2 · SSaikia_JtheRocker

Или вы также можете переопределить функцию needTaskCommit() класса FileOutputCommitter.

Проверьте этот блог Криса, чтобы добиться этого.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы