hadoop reducer局部变量始终初始化

9w11ddsr  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(233)

我在reducer类中有一个类变量:

public static class ReduceClass extends 
                             Reducer<Text, IntWritable, Text, IntWritable> {
    int N = 0;

    @Override
    public void reduce(Text key, Iterable<IntWritable> values, Context context)
                                     throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable value : values) {
            sum += value.get();
        }

        if (key.equals(something)) 
        {
            N += sum;
        } 

        else 
        {
            if(N > 0) context.write(key, new IntWritable(N));
            else    //write something else
        }
    }
}

然而,即使'key.equals(something)'满足(它至少满足一次,肯定),在reduce函数调用之间,n始终是0。
有趣的是,如果我在函数的开头加上'n++',n的值在reduce调用之间确实是递增的,但是'n+=sum'根本不起作用!就像它从不执行一样。
我做错什么了?我只需要n在reduce调用之间保持它的值。当然是每个减速机。
蒂亚。

暂无答案!

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

相关问题