有没有人为Riak提供mapreduce的示例代码,可以在单个Riak节点上运行.
cd ~/riak erl -name zed@127.0.0.1 -setcookie riak -pa apps/riak/ebin
在shell中:
# connect to the server > {ok, Client} = riak:client_connect('riak@127.0.0.1'). {ok,{riak_client,'riak@127.0.0.1',<<6,201,208,64>>}} # create and insert objects > Client:put(riak_object:new(<<"groceries">>, <<"mine">>, ["eggs", "bacons"]), 1). ok > Client:put(riak_object:new(<<"groceries">>, <<"yours">>, ["eggs", "sausages"]), 1). ok # create Map and Reduce functions > Count = fun(G, 'undefined', 'none') -> [dict:from_list([{I, 1} || I <- riak_object:get_value(G)])] end. #Fun> Merge = fun(Gcounts, 'none') -> [lists:foldl(fun(G, Acc) -> dict:merge(fun(_, X, Y) -> X+Y end, G, Acc) end, dict:new(), Gcounts)] end. #Fun # do the map-reduce > {ok, [R]} = Client:mapred([{<<"groceries">>, <<"mine">>}, {<<"groceries">>, <<"yours">>}], [{'map', {'qfun', Count}, 'none', false}, {'reduce', {'qfun', Merge}, 'none', true}]). {ok,[{dict,... > dict:to_list(R). [{"eggs",2},{"susages",1},{"bacons",1}]
对于服务器我使用绝对默认配置:
$ hg clone http://hg.basho.com/riak/ $ cd riak $ ./rebar compile generate $ cd rel $ ./riak/bin/riak start