2012-03-17 53 views
0
function(values) { 
    return values.sort(
     function(a, b) { 
      return b['timestamp'] - a['timestamp']; 
     } 
    ); 
} 

我目前正在執行Riak MapReduce查詢的reduce階段的上述代碼,但它沒有通過timestamp key的值正確排序。任何想法爲什麼?Riak對MapReduce的排序

我使用了Riak Python客戶端,這是完整的代碼,其包含上述減少步驟:

query = riak_client.add('bucket') 

query.map("function(v) { var data = JSON.parse(v.values[0].data); if (data.item == 'A') { return [[v.key, data]]; } return []; }") 

query.reduce("function(values) { return values.sort(function(a, b) { return b['timestamp'] - a['timestamp']; }); }") 

for result in query.run(): 
    print result 
+0

'B [ '戳']'應該是'B [1] [ '戳']'和'一個[ '戳']'應根據Basho用戶列表中的回覆,可以是'[1] ['timestamp']':http://lists.basho.com/pipermail/riak-users_lists.basho.com/2012-March/007895.html – ekillaby 2013-07-15 19:15:29

回答

2

嘗試包裹方括號內的返回部分,有效地返回結果的數組。

function(values) { 
    return values.sort(
    function(a, b) { 
     return b['timestamp'] - a['timestamp']; 
    } 
); 
} 

有它看起來像這樣:

function(values) { 
    return [values.sort(
    function(a, b) { 
     return b['timestamp'] - a['timestamp']; 
    } 
)]; 
} 
+0

I由於這個,會得到奇怪的遞歸結果。任何想法爲什麼? – James 2012-03-23 21:19:32