我在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调用之间保持它的值。当然是每个减速机。
蒂亚。
暂无答案!
目前还没有任何答案,快来回答吧!