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