我是 Riak 和 Erlang 的新手。我已经成功创建并运行了 JS MapReduce 作业,现在我正在尝试执行以下 Reduce 函数:
http://web.archive.org/web/20130329021000/http://contrib.basho.com/delete_keys.html
执行这个reduce函数的步骤是什么?具体来说,
- 我应该把代码放在哪里?
- 我应该输入
addReducePhase( )
什么?
谢谢
我是 Riak 和 Erlang 的新手。我已经成功创建并运行了 JS MapReduce 作业,现在我正在尝试执行以下 Reduce 函数:
http://web.archive.org/web/20130329021000/http://contrib.basho.com/delete_keys.html
执行这个reduce函数的步骤是什么?具体来说,
addReducePhase( )
什么?谢谢
你应该写这样的东西:
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 客户端自述文件。我希望这有帮助!