如何在Riak上运行Erlang MapReduce函数?

时间:2012-06-11 18:20:30

标签: erlang mapreduce riak

我是Riak的新手,也是Erlang的新手。我已成功创建并运行JS MapReduce作业,现在我正在尝试执行以下Reduce函数:

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

执行此reduce功能的步骤是什么?具体来说,

  • 我应该把代码放在哪里?
  • 我应该在addReducePhase( )输入什么内容?

由于

1 个答案:

答案 0 :(得分: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)

(最后的结果是一个标志,如果必须将结果返回给客户端 - 最后一步 - 或者不是 - 中间步骤 - )

Erlang文件在使用前应编译为.beam,并添加到riak.config中的“add_paths”参数,如

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

其中/ home / vinz / riak / custom_modules是包含已编译的Erlang模块的目录。

有关详细信息,请参阅Basho Java Client readme。 我希望这有帮助!

相关问题