Я новичок в hadoop, я знаком с стилем программирования с уменьшением карты, но теперь у меня возникла проблема: иногда мне нужна только карта для задания, и мне нужен результат непосредственно в качестве вывода, что означает, что здесь не нужна фаза уменьшения, как я могу достичь этого?
Как написать 'map only' hasoop jobs?
Ответ 1
Это отключает редуктор.
job.setNumReduceTasks(0);
Ответ 2
Вы также можете использовать IdentityReducer:
http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/IdentityReducer.html
Ответ 3
Может быть очень полезно, когда вам нужно запускать работу с карточками только с терминала. Вы можете отключить редукторы, указав 0 редукторов в команде хаоса jar неявно:
-D mapred.reduce.tasks=0
Итак, команда result будет следующей:
hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir
Чтобы быть обратно совместимым, Hadoop также поддерживает параметр "-reduce NONE", который эквивалентен "-D mapred.reduce.tasks = 0".