Hi Shaan,

When using a bucket, input is <<"groceries">>. Did you by any chance specify it 
as [<<"groceries">>]?

I ran the example and it worked for me with the following result:

28> {ok, [{1, [R]}]} = riakc_pb_socket:mapred(Client,<<"groceries">>,[{map, 
{qfun, Count}, none, false},{reduce, {qfun, Merge}, none, true}]).          
{ok,[{1,                            
      [{dict,3,16,16,8,80,48,
             {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
             {{[],[],[],[],[],
               [["bread"|1],["eggs"|1]],
               [["bacon"|2]],
               [],[],[],[],[],[],...}}}]}]}

Best regards,

Christian



On 10 Jan 2013, at 15:57, Shaan Sapra <shaanf...@gmail.com> wrote:

> Unfortunately, this does not seem to work..
> 
> ** exception error: no match of right hand side value 
> {error,<<"{inputs,{\"Inputs target tuples must be {B,K} or 
> {{B,K},KeyData}:\",\n         [<<\"groceries\">>]}}">>}
> 
> 
> On Thu, Jan 10, 2013 at 9:43 AM, Shaan Sapra <shaanf...@gmail.com> wrote:
> Ah thank you! 
> 
> 
> On Thu, Jan 10, 2013 at 9:40 AM, Christian Dahlqvist <christ...@basho.com> 
> wrote:
> Hi Shaan,
> 
> The riakc_pb_socket:mapred function can take several different types of 
> input: a bucket name, a list of bucket/key pairs or a secondary index query 
> specification. 
> 
> If you wanted to run the example in the tutorial based on all keys in the 
> groceries bucket instead of having to specify the keys individually, you 
> could set input to the bucket name <<"groceries">> as shown below:
> 
> {ok, [{1, [R]}]} = riakc_pb_socket:mapred(
>                          Client,
>                          [<<"groceries">>,
>                          [{map, {qfun, Count}, none, false},
>                           {reduce, {qfun, Merge}, none, true}]).
> 
> The specification for what inputs you can specify is available in the 
> riakc.hrl file 
> (https://github.com/basho/riak-erlang-client/blob/master/include/riakc.hrl) 
> and looks like this:
> 
> -type mapred_inputs() :: [{bucket(), key()} | {{bucket(), key()}, term()}] |
>                          {modfun, Module::atom(), Function::atom(), [term()]} 
> |
>                          bucket() |
>                          {index, bucket(), Index::binary(), key()} |
>                          {index, bucket(), Index::binary(), StartKey::key(), 
> EndKey::key()}.
> 
> Best regards,
> 
> Christian
> 
> 
> 
> On 10 Jan 2013, at 06:56, Shaan Sapra <shaanf...@gmail.com> wrote:
> 
>> Hi all,
>> 
>> I'm exploring the erlang-riak-client and trying to write MapReduce functions 
>> to mimic the ones I've written in Javascript and in the riak-ruby-client.
>> 
>> Following the tutorial here, I have successfully run the query. I have now 
>> loaded a bucket with 10000 keys into Riak and now I want to write a simple 
>> map function that queries the bucket and returns all of the objects back to 
>> me.
>> 
>> I noticed that the input is specified as {<<"groceries">>, <<"mine">>}. Is 
>> there is a way to specify just the bucket in its entirety? If I wanted to 
>> query my bucket, would I have to list all 10000 keys in a list?
>> 
>> In the riak-ruby-client, it was possible to add the entire bucket. 
>> 
>> Thanks for any help! I'm sure this is a silly question, but I've been hard 
>> pressed to find good documentation for a novice like me.
>> 
>> Shaan
>> _______________________________________________
>> riak-users mailing list
>> riak-users@lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
> 
> 
> 

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

Reply via email to