如何将初始值传递给riak中的reduce阶段?

时间:2014-02-07 13:23:11

标签: ruby mapreduce riak ripple riak-search

我正在尝试使用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作为初始值。有人可以告诉我如何传递初始值以减少阶段??

1 个答案:

答案 0 :(得分:0)

reduce阶段函数有两个参数,第一个是输入列表,包含先前reduce阶段迭代的输出以及前一个map / input阶段的一批输出。第二个参数是每次执行reduce阶段函数时传递的配置参数。这在Riak MapReduce documentation

中有更详细的描述

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