我在这里感到困惑的主要事情(我认为)是 qfun 的参数应该是什么以及返回值应该是什么。自述文件基本上没有说明这一点,它给出的示例丢弃了第二个和第三个参数。
现在我只是想理解这些论点,而不是把 Riak 用于任何实际的事情。最终,我将尝试用它重建我们的(缓慢的、基于 MySQL 的)财务报告系统。所以在这里忽略我的目标的无意义,为什么下面给我一个badfun
例外?
数据只是名称和年龄的元组(对),键是名称。在从 Erlang 控制台插入数据之前,我没有对 JSON 等进行任何转换。
现在存储了一些{Name, Age}
对,<<"people">>
我想使用 MapReduce(除了了解“如何”之外没有其他原因)来获取值,在第一次使用时保持不变。
riakc_pb_socket:mapred(
Pid, <<"people">>,
[{map, {qfun, fun(Obj, _, _) -> [Obj] end}, none, true}]).
但是,这只是给我带来了麻烦:
{error,<<"{\"phase\":0,\"error\":\"{badfun,#Fun<erl_eval.18.17052888>}\",\"input\":\"{ok,{r_object,<<\\\"people\\\">>,<<\\\"elaine\\\">"...>>}
我如何只通过我的地图函数传递数据不变?有没有比 README 更好的 Erlang 客户端文档?该自述文件似乎假设您已经知道输入是什么。