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

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

Спасибо.


person abhinavkulkarni    schedule 31.07.2013    source источник


Ответы (2)


arrow_upward
1
arrow_downward

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

LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);

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

person Charles Menguy    schedule 31.07.2013

arrow_upward
0
arrow_downward

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

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

person SSaikia_JtheRocker    schedule 31.07.2013