Как преобразовать двоичные данные в целое число на mapreduce в riak

Я работаю над клиентом riak-erlang,

Я сделал следующее...

3> Mapf = fun(Obj,_,_) -> [riak_object:get_value(Obj)] end.
#Fun<erl_eval.18.82930912>
4> 
4>  {ok, [{0,[R]}]} = riakc_pb_socket:mapred(Pid,<<"tst">>, [{map{qfun,Mapf},none,true}]).    
** exception error: no match of right hand side value {ok,[{0,[<<"2">>,<<"4">>,<<"6">>,<<"3">>,<<"5">>,<<"1">>]}]}

Как решить эту проблему

а также как решить такие проблемы

{ok, [{0,[S]}]} = riakc_pb_socket:mapred(Pid,<<"test">>,[{map,  {qfun,Maps},none,true}]).   
** exception error: no match of right hand side value {ok,[{0,
                                                        [<<"{\"age\": 24, \"name\": \"krishna\"}">>,
                                                         <<"{\"age\": 29, \"name\": \"sharat\"}">>,
                                                         <<"{\"age\": 27, \"name\": \"anil\"}">>,
                                                         <<"{\"age\": 28, \"name\": \"kumar\"}">>,
                                                         <<"{\"age\": 24, \"name\": \"gopi\"}">>,
                                                         <<"{\"age\": 25, \"name\": \"ramesh\"}">>]}]}

если я хочу получить только возраст, где возраст был четным. как написать функцию карты.


person Krish gopi    schedule 17.05.2014    source источник


Ответы (1)


У вас возникли проблемы с сопоставлением шаблонов. Вы оба раза пытаетесь сопоставить список, используя [R] = [<<data…>>,…].

[R] на самом деле соответствует списку из 1 элемента, элементу которого соответствует R.
Вам нужно удалить эти скобки, чтобы соответствовать всей структуре данных, например: {ok, [{0,R}].

person fenollp    schedule 17.05.2014