On Mon, Oct 15, 2012 at 4:13 AM, Olav Frengstad <o...@fwt.no> wrote:
> Just as a note, using the Erlang pb client you can use the key filters
> for 2i queries if you include the riak_kv_mapred_filters module in
> your client code path.
…
> 2> Index = {index, <<"test">>, <<"$key">>, <<0>>, <<255>>},
> 2> {ok, Filter} = 
> riak_kv_mapred_filters:build_filter([[<<"ends_with">>,"1"]]),
> 2> MR = [
> 2>   { reduce
> 2>   , {qfun, fun(X, F) -> lists:filter(fun({A, B}) -> F(B) end, X) end}
> 2>   , riak_kv_mapred_filters:compose(Filter)
> 2>   , true}],
> 2> riakc_pb_socket:mapred(Pid, Index, MR).

It's a bit unfortunate that qfun is so useful, because it's also so
fragile. If your client node is not using exactly the same module
version as every node in your Riak cluster, this will fail with
undefined function errors. Absolutely, go ahead and use qfun to learn
with, but keep an eye out for that kind of surprise. Avoid qfun in
production if you can, or your upgrade process will become more
complex and/or prone to failure.

Yes, 
http://docs.basho.com/riak/latest/references/appendices/MapReduce-Implementation/
should be improved to give this warning as well. I've added an issue
to our new docs repo to track this improvement:
https://github.com/basho/basho_docs/issues/13

-Bryan

_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to