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 模块的目录。

有关详细信息,请参阅Basho Java 客户端自述文件。我希望这有帮助!

于 2012-06-12T08:59:02.593 回答