編集:この概念は「転送と収集」として知られているようです。これが Riak-Java クライアントでどのように機能するかを確認します。
現在、オブジェクトのキーのリストを返す単純な MapReduce を Riak で実行していUser
ます。簡単にするために、単純に a の値をUser
キーにマップして、ユーザーのリストを返します。Scalaでこれまでに得たもの(Javaクライアントを使用)は次のとおりです。参考までに、キーは複合であり、次のようになりますclientId-userId
。
val map = new JSSourceFunction("""
function(riakObject){
var rolek = riakObject.key;
return [rolek];
}
""")
val reduce = new JSSourceFunction("""
function(value){
var returnValue=[], splitarr=[];
for(i=0;i<value.length;i++){
splitarr=String(value[i]).split("-");
returnValue = returnValue.concat([splitarr[1]]);
}
return returnValue;
}
""")
DB.client.mapReduce("rolesOfClientAdmins")
.addKeyFilter(new TokenizeFilter("-", 1))
.addKeyFilter(new MatchFilter(clientId))
.addMapPhase(map)
.addReducePhase(reduce)
.execute().getResult(classOf[String])
Reduce フェーズの後に別の Map フェーズを追加する必要がありますか? どういうわけかバケットを変更する必要がありますか? 助けてくれてありがとう!