2014-02-07 28 views
1

我想寫一個riak map reduce使用riak-ruby-client。使用Javascript功能降低看起來是這樣的:如何將初始值傳遞到riak中的縮小階段?

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作爲初始值這裏。有人可以告訴我如何通過初始值來減少相位?

回答

0

reduce階段函數有兩個參數,第一個是輸入列表,包含前一個reduce階段迭代的輸出以及前一個map/input階段的一批輸出。第二個參數是每次執行reduce階段函數時傳遞的配置參數。這在Riak MapReduce documentation中有更詳細的描述。由於縮減階段函數需要是可交換的,關聯的和冪等的,所以不可能可靠地識別哪一個是第一次迭代,因此不可能設置初始值。

+0

謝謝,不得不考慮重新縮小階段,這是我以前沒有做過的。 –

相關問題