如何在 Riak 上运行 Erlang MapReduce 函数



我是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 客户端自述文件。我希望这有帮助!

最新更新