我正在使用简单 MapReduce 操作的 Qizmt 运行本地单系统测试。在“地图”阶段结束时,我打电话给:
output.Add(rKey, rValue);
这被称为一百万次,键是 1,2,3,4,5,6 等 - 每个都是唯一的(毕竟我只是在测试)。我已经检查过这是否按预期发生。这是。该函数被调用一百万次,并且输入的值是正确的。
令我惊讶的是,仅在“Reduce”阶段,实际上收到了大约一百个键(也就是说,“Reduce”函数只被调用了一百次左右)。这些键似乎几乎是从映射为以下模式的列表中任意选择的:0、383、766、2858、3241、5716 等。
使其通过“减少”的一组键是一致的。IE。每次运行任务时,我都会得到 0、383、766 等。但是,如果我在集群中添加第二个系统,则通过的密钥集将完全改变!
'Map' 和 'Reduce' 之间的阶段对我来说有点神秘 - 我真的不确定该去哪里看,因为我的 Map 函数的行为似乎完全符合预期(也就是说,调用 'output' 一百万次)。有没有更多的并行处理经验的人知道我应该在哪里寻找,或者任何可能导致这种行为的东西?