我可以编写一个只有Mappers和Combiners的Hadoop代码(即没有减速器的迷你减速器)吗?
job.setMapperClass(WordCountMapper.class);
job.setCombinerClass(WordCountReducer.class);conf.setInt(“mapred.reduce.tasks”,0);
我试图这样做,但我总是看到我在工作跟踪链接上有一个减少任务
推出减少任务= 1
如何在保留合并器的同时删除减速器?那可能吗?
答案 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都是唯一的。