在Hadoop中没有Reducer的组合器

时间:2014-03-04 13:50:53

标签: hadoop mapreduce

我可以编写一个只有Mappers和Combiners的Hadoop代码(即没有减速器的迷你减速器)吗?

  

job.setMapperClass(WordCountMapper.class);
    job.setCombinerClass(WordCountReducer.class);

     

conf.setInt(“mapred.reduce.tasks”,0);

我试图这样做,但我总是看到我在工作跟踪链接上有一个减少任务

  

推出减少任务= 1

如何在保留合并器的同时删除减速器?那可能吗?

2 个答案:

答案 0 :(得分:0)

你需要告诉你的工作你不关心减速器:JobConf.html#setNumReduceTasks(int)

// new Hadoop API
jobConf.setNumReduceTasks(0);

// old Hadoop API
job.setNumReduceTasks(0);

您可以使用IdentityReducer来实现某些目标。

  

不执行缩减,将所有输入值直接写入输出。

我不确定你是否可以保留合并器,但我将从之前的行开始。

答案 1 :(得分:0)

在您描述的情况下,您应该使用Reducers。用作键:Context.getInputSplit()。getPath()+ Context.getInputSplit()。getStart() - 这个组合对于每个Mapper都是唯一的。