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

如何在Riak上运行Erlang MapReduce函数?,erlang,mapreduce,riak,Erlang,Mapreduce,Riak,我是Riak和Erlang的新手。我已经成功创建并运行了JS MapReduce作业,现在我正在尝试执行以下Reduce函数: 执行此reduce函数的步骤是什么?具体来说, 我应该把代码放在哪里? 我应该在AddReducePase中键入什么? 谢谢你应该写下这样的内容: MapReduceResult result = client.mapReduce("myBucket") .addLinkPhase("bucketX", "test", false) .addMapPha

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

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

我应该把代码放在哪里? 我应该在AddReducePase中键入什么?
谢谢

你应该写下这样的内容:

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 phase调用函数reduce_sort of erlang模块riak_kv_mapreduce。 对你来说,你应该打电话

.addReducePhase(new NamedErlangFunction("reduce_functions", "delete"), true)
末尾的true是一个标志,用于设置结果是否必须返回到客户端-最后一步-或不返回-中间步骤-

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

{add_paths, ["/home/vinz/riak/custom_modules/"]}
其中/home/vinz/riak/custom_modules是包含已编译Erlang模块的目录

有关更多信息,请参阅。
我希望这有帮助

你应该写一些类似于:

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 phase调用函数reduce_sort of erlang模块riak_kv_mapreduce。 对你来说,你应该打电话

.addReducePhase(new NamedErlangFunction("reduce_functions", "delete"), true)
末尾的true是一个标志,用于设置结果是否必须返回到客户端-最后一步-或不返回-中间步骤-

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

{add_paths, ["/home/vinz/riak/custom_modules/"]}
其中/home/vinz/riak/custom_modules是包含已编译Erlang模块的目录

有关更多信息,请参阅。
我希望这有帮助

上面的例子不起作用。如这里所述,我应该在app.config中设置add_路径设置。根据文档,add_path是要添加到Erlang代码路径的路径列表。此设置对于允许Riak在MapReduce查询期间使用外部模块特别有用。我应该先编译erlang模块吗?我应该如何命名该文件?感谢您的提问。关于如何命名文件,上面的riak_kv_mapreduce模块包含在名为“riak_kv_mapreduce.erl”的文件中,并编译为“riak_kv_mapreduce.beam”。上面的示例不起作用。如这里所述,我应该在app.config中设置add_路径设置。根据文档,add_path是要添加到Erlang代码路径的路径列表。此设置对于允许Riak在MapReduce查询期间使用外部模块特别有用。我应该先编译erlang模块吗?我应该如何命名该文件?感谢您的提问。关于如何命名文件,上面的riak_kv_mapreduce模块包含在名为“riak_kv_mapreduce.erl”的文件中,并编译为“riak_kv_mapreduce.beam”。