Mapred unable to find keys that use bucket types

Christopher Meiklejohn cmeiklejohn at basho.com
Thu Feb 5 14:15:58 EST 2015


> On Feb 5, 2015, at 10:55 AM, Mikhail Pustovalov <mpustovalov at gmail.com> wrote:
> 
> Hello,
> I am using MapReduce just as a way to get multiple keys in one query (I couldn't find a better way). My code used to work with Riak v.1.4 but now when I try to run it against the latest version (2.0.4) mapred queries return {error, notfound} for each key supplied.
> I have created a bucket type, put my keys inside a bucket in that type. Simple 'put' and 'get' work fine. This line returns requested object:
> riakc_pb_socket:get(Pid,{<<"avs_n2">>,<<"avatars">>},<<145,3,100,41,46>>).
> This line though:
> riakc_pb_socket:mapred(Pid, [{{<<"avs_n2">>,<<"avatars">>},<<145,3,100,41,46>>}],[{map, {modfun, rc_mapred, map_kv_pairs}, none, true}]).
> returns this:
> {ok,[{0,[{error,notfound}]}]}
> Seems like mapred functions are unable to query using bucket types. Without bucket types everything still works fine.
> Also mapred_bucket over a whole bucket also works fine.
> Please, advise. Is it possible to use mapred with newly introduced bucket types when I want only specific keys and not the full scan of a bucket?

Hi Mikhail,

You’ll need to specify the bucket type as part of the bucket name when performing the map reduce, for example, for inputs for the “maps” bucket type and “users” bucket, you should use {<<“maps”>>, <<“users”>>} as the bucket name for riakc_pb_socket.

Thanks,
- Chris

Christopher Meiklejohn
Senior Software Engineer
Basho Technologies, Inc.
cmeiklejohn at basho.com



More information about the riak-users mailing list