我正在hadoop 2.6.0中进行二次排序,我将遵循以下教程:https://vangjee.wordpress.com/2012/03/20/secondary-sorting-aka-sorting-values-in-hadoops-mapreduce-programming-paradigm/
我有完全相同的代码,但现在我试图提高性能,所以我决定添加一个组合器。我添加了两个修改:
主文件:
job.setCombinerClass(CombinerK.class);
组合器文件:
public class CombinerK extends Reducer<KeyWritable, KeyWritable, KeyWritable, KeyWritable> {
public void reduce(KeyWritable key, Iterator<KeyWritable> values, Context context) throws IOException, InterruptedException {
Iterator<KeyWritable> it = values;
System.err.println("combiner " + key);
KeyWritable first_value = it.next();
System.err.println("va: " + first_value);
while (it.hasNext()) {
sum += it.next().getSs();
}
first_value.setS(sum);
context.write(key, first_value);
}
}
但它似乎没有运行,因为我找不到任何日志文件有“组合器”。当我在跑步后看到计数器时,我可以看到:
Combine input records=4040000
Combine output records=4040000
组合器似乎正在执行,但似乎它一直在接收对每个键的调用,因此它在输入中的编号与输出中的编号相同。
暂无答案!
目前还没有任何答案,快来回答吧!