for(IntWritable val:values){
sum+=val.get();
}
context.write(key,new IntWritable(sum))
我唯一的不同是使用了sum++,考虑到map输出的值都是1,所以每一次迭代都只是sum加一。
但是最后统计结果每个单词出现的次数全为1,我把代码改回 sum+=val.get()之后,结果就正确了,这是为什么呢?
后来尝试sum+=1,结果也全为1
for(IntWritable val:values){
sum+=val.get();
}
context.write(key,new IntWritable(sum))
我唯一的不同是使用了sum++,考虑到map输出的值都是1,所以每一次迭代都只是sum加一。
但是最后统计结果每个单词出现的次数全为1,我把代码改回 sum+=val.get()之后,结果就正确了,这是为什么呢?
后来尝试sum+=1,结果也全为1
sum++ 对本地变量进行累加 下次sum初始值还是0 所以无论加多少次 只相当于加了一次