hadoop键组合器

nc1teljy  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(255)

我正在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

组合器似乎正在执行,但似乎它一直在接收对每个键的调用,因此它在输入中的编号与输出中的编号相同。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题