我的Ubuntu Server vm上有一个CDH3伪分布式群集。据我所知,似乎工作得很好。到目前为止,我已经尝试运行一些示例MR程序,并且它们按预期工作。
我正在弄乱一个例子,它用csv,逗号分隔文件中的所有数字相加。我没有输出总和,而是添加了另一行输出它加在一起的KV对的总数。我有两行output.collect:
output.collect(new DoubleWritable(0), new DoubleWritable(count));
output.collect(new DoubleWritable(1), new DoubleWritable(sum));
我期待的是
0.0 273 // correct number of KV pairs
1.0 14803.957104520006 // correct sum of all values
相反,我正在
0.0 2.0
1.0 273.0
0.0 2.0
1.0 14803.957104520006
我只有2个output.collect语句,有人可以解释为什么我有4个输出行吗?我确信该程序正在计算并正确添加,但我无法理解它在幕后的作用以及为什么它的行为如此?
在没有我要求的情况下,它可能会进行分布式添加吗?
我的代码:http://pastebin.com/KX3uVN27
提前致谢!