如何写'仅限地图'hadoop工作?

Bre*_*nen 41 hadoop mapreduce

我是hadoop的新手,我对map-reduce编程的风格越来越熟悉,但现在我遇到了一个问题:有时候我只需要映射一个工作而我只需要将地图结果直接作为输出,这意味着减少这里不需要阶段,我该如何实现?

Tho*_*lut 58

这会关闭减速机.

job.setNumReduceTasks(0);
Run Code Online (Sandbox Code Playgroud)

http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Job.html#setNumReduceTasks(int)

  • 在这种情况下,我们是否需要指定reduce输出键和值? (2认同)

Pet*_*ann 8

您还可以使用IdentityReducer:

http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/IdentityReducer.html

  • 我很抱歉omnisis,但这不正确:将reduce任务的数量设置为零将省略任何排序.http://stackoverflow.com/questions/10630447/hadoop-difference-between-0-reducer-and-identity-reducer (2认同)

Ale*_*lex 5

当您只需要从终端使用映射器启动作业时,这会非常有用。您可以通过在 hadoop jar 命令中隐式指定 0 个减速器来关闭减速器:

-D mapred.reduce.tasks=0 
Run Code Online (Sandbox Code Playgroud)

所以结果命令如下:

hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir
Run Code Online (Sandbox Code Playgroud)

为了向后兼容,Hadoop 还支持“-reduce NONE”选项,相当于“-D mapred.reduce.tasks=0”。