1

我正在尝试使用riak-ruby-client编写 riak map reduce 。Javascript reduce 函数如下所示:

arr.reduce(callback,[initialValue]);

我正在做这样的事情:

map_reduce = Riak::MapReduce.new(Ripple.client)
map_reduce.add(bucket) // I have passed a valid bucket
var callback = "function(previous, current){return previous + current;}"

results = map_reduce.map(map_func).reduce(callback,1,:keep=>true).run //1 is the initial value as in javascript reduce func.

但 riak 并没有将 1 视为此处的初始值。有人能告诉我如何通过初始值来减少阶段吗?

4

1 回答 1

0

reduce 阶段函数有两个参数,第一个是输入列表,包含前一个 reduce 阶段迭代的输出以及前一个 map/输入阶段的一批输出。第二个参数是每次执行reduce阶段函数时传入的配置参数。这在Riak MapReduce 文档中有更详细的描述。

由于 reduce 阶段函数需要是可交换的、关联的和幂等的,因此无法可靠地识别哪个是第一次迭代,因此无法设置初始值。

于 2014-02-10T08:47:19.700 回答