hadoop reducer局部变量总是初始化

时间:2014-02-19 00:15:01

标签: java variables hadoop local

我在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)'满足(它至少确实一次),在减少函数调用之间N总是为0。

有趣的是,如果我在函数的开头添加'N ++',N的值会在reduce调用之间递增 - 但'N + = sum'根本不会影响!就像它永远不会执行。

我做错了什么?我只需要N来保持它在减少调用之间的价值。当然,每减速机。

TIA。

0 个答案:

没有答案
相关问题