我正在使用简单的MapReduce操作的Qizmt运行本地单系统测试。在“地图”阶段结束时,我打电话给:
output.Add(rKey, rValue);
这被称为让我们说一百万次,键是1,2,3,4,5,6等 - 每个都是唯一的(毕竟我只是测试)。我已经检查过这是按预期发生的。它是。该函数称为一百万次独立时间,值输入正确。
令我惊讶的是,仅在'Reduce'阶段,实际上接收了大约一百个键(也就是说,'Reduce'函数只被调用了一百次左右)。这些键似乎几乎任意地从列表映射的列表中选择,如下所示:0,383,766,2858,3241,5716等。
通过“减少”的一组键是一致的。即。每次运行任务时我都会得到0,383,766等。但是,如果我向群集中添加第二个系统,那么通过它的一组密钥就会完全改变!
'Map'和'Reduce'之间的阶段对我来说有点神秘 - 我真的不知道在哪里看,因为我的Map函数似乎表现得与预期一致(即调用'输出' '一百万次)。有更多并行处理经验的人是否知道我应该在哪里寻找,或者任何可能导致这种行为的事情?
答案 0 :(得分:0)
没解决。最终用另一种语言编写了该项目,并没有遇到同样的问题。 Qizmt似乎根本没有得到更新。