所以我Riak
在 2EC2
台服务器上运行,使用 python 运行 javascript Mapreduce
。它们已经聚集在一起。主要用于“概念证明”。
桶中有 50 个键,map/reduce 函数所做的只是重新格式化数据。这仅用于测试 Riak 中的 map/reduce 功能。
问题:输出只显示 [{u'e': 2, u'undefined': 2, u'w': 2}]。那是完全错误的。日志显示所有密钥都已“处理”但只有 2 个被返回。所以我的问题是为什么会发生这种情况,我是否错过了一些重要的事情。
代码:
import riak
client = riak.RiakClient()
query = riak.RiakMapReduce(client).add('raw_hits10')
query.map("""function(v) {
var data = JSON.parse(v.values[0].data);
return [[data, 1]];
}""")
query.reduce("""function(vk) {
var res = {};
for (var indx in vk) {
var key_t = vk[indx][0];
var val_t = vk[indx][1];
ejsLog('/tmp/map_reduce.log', key_t + "--- " + val_t);
res[key_t] = 2;
}
return [res]
}
""")
for res in query.run():
print res
打印结果:
[{u'e': 2, u'undefined': 2, u'w': 2}]
这没有任何意义