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

时间:2012-02-22 12:06:27

标签: hadoop mapreduce

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

4 个答案:

答案 0 :(得分:58)

答案 1 :(得分:8)

答案 2 :(得分:4)

当您需要仅使用来自终端的映射器启动作业时,这非常有用。您可以通过隐式指定hadoop jar命令中的0 reducer来关闭Reducer:

-D mapred.reduce.tasks=0 

结果命令如下:

hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir

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

答案 3 :(得分:0)

如果您将oozie用作管理您的hadoop作业的调度程序,则只需将属性mapred.reduce.tasks(这是每个作业的减少任务的默认数量)设置为0。您可以在该属性为mapreduce.map.class,并且由于不需要缩减器,因此无需添加属性mapreduce.reduce.class。

<configuration>
   <property>
     <name>mapreduce.map.class</name>
     <value>my.com.package.AbcMapper</value>
   </property>
   <property>
     <name>mapred.reduce.tasks</name>
     <value>0</value>
   </property>
   .
   .
   .
<configuration>