1

私はRiakとErlangを初めて使用します。JS MapReduceジョブを正常に作成して実行しました。現在、次のReduce関数を実行しようとしています。

http://web.archive.org/web/20130329021000/http://contrib.basho.com/delete_keys.html

このreduce関数を実行する手順は何ですか?具体的には、

  • コードはどこに置くべきですか?
  • 何を入力すればよいaddReducePhase( )ですか?

ありがとう

4

1 に答える 1

4

次のように書く必要があります。

MapReduceResult result = client.mapReduce("myBucket")
    .addLinkPhase("bucketX", "test", false)
    .addMapPhase(new NamedJSFunction("Riak.mapValuesJson"), false)
    .addReducePhase(new NamedErlangFunction("riak_kv_mapreduce", "reduce_sort"), true)
.execute();

この場合、reduceフェーズはerlangモジュールriak_kv_mapreduceの関数reduce_sortを呼び出します。あなたの場合、あなたは電話するべきです

.addReducePhase(new NamedErlangFunction("reduce_functions", "delete"), true)

(最後のtrueは、結果をクライアントに返す必要がある場合に設定されるフラグです-最後のステップ-またはそうでない-中間ステップ-)

Erlangファイルは使用前に.beamとしてコンパイルし、riak.configの「add_paths」パラメーターに追加する必要があります。

{add_paths, ["/home/vinz/riak/custom_modules/"]}

ここで、/ home / vinz / riak / custom_modulesは、コンパイルされたErlangモジュールを含むディレクトリです。

詳細については、 BashoJavaクライアントのreadmeを参照してください。これがお役に立てば幸いです。

于 2012-06-12T08:59:02.593 に答える