Thank you Mark. I'll contribute to the repo when I find time.

Thanks
Deepak Bala

On Mon, Sep 17, 2012 at 5:45 AM, Mark Phillips <[email protected]> wrote:

> Addendum:
>
> In the interest of completeness, it's worth noting that the Erlang
> builtins are here:
>
> https://github.com/basho/riak_kv/blob/master/src/riak_kv_mapreduce.erl
>
> Mark
>
> On Sun, Sep 16, 2012 at 5:08 PM, Mark Phillips <[email protected]> wrote:
> > Hi Deepak,
> >
> > I can answer one of two questions here...
> >
> > On Fri, Sep 14, 2012 at 9:42 AM, Deepak Balasubramanyam
> > <[email protected]> wrote:
> >> Thanks for the tip Russell. I managed to get this done.
> >>
> >> I have one more question and a suggestion.
> >>
> >> Is the name keyData a misnomer in the mapping function ->
>  function(value,
> >> keyData, arg)  ? keyData is a String that carries the bucket name. The
> value
> >> object carries more information. value[0].data represents the data
> itself
> >> among other properties that represent user metadata; riak links;
> indexes;
> >> key; etc etc.
> >> If mapValuesJson: function(value, keyData, arg) can take an input
> argument
> >> and use it to add a json property whose value is the riak key, a custom
> >> function would not be necessary. It would be a neat little system
> feature
> >> which I take would need amendments to mapred_builtins.js.
> >>
> >> Is riak_kv the repo to make contributions to system built functions ?
> There
> >> are quite a few open pull requests on that repo, so I'm not sure where
> this
> >> change should go.
> >>
> >
> > The riak_kv repo is indeed the repo you want for this. Specifically,
> > you'll want to start here:
> >
> > https://github.com/basho/riak_kv/blob/master/priv/mapred_builtins.js
> >
> > As far as the large queue of pull requests go, we're working on
> > merging/addressing the backlog (for this and a few other repos). Send
> > yours our way. It'll get some love when time allows.
> >
> > Thanks.
> >
> > Mark
> >
> >
> >>
> >> Thanks
> >> Deepak Bala
> >>
> >> On Fri, Sep 14, 2012 at 7:16 PM, Russell Brown <[email protected]>
> wrote:
> >>>
> >>>
> >>> On 14 Sep 2012, at 14:24, Deepak Balasubramanyam wrote:
> >>>
> >>> > Hi,
> >>> >
> >>> > I've written a map reduce query on the riak java client like so...
> >>> >
> >>> > client.mapReduce(BUCKET).addKeyFilter(keyFilter)
> >>> >                     .addLinkPhase(BUCKET, "_", false)
> >>> >                     .addMapPhase(new
> >>> > NamedJSFunction("Riak.mapValuesJson"), false)
> >>> >                     .addReducePhase(phaseFunction).execute();
> >>> > Collection<MyType> types = result.getResult(MyType.class);
> >>> >
> >>> > This is the class definition for MyType
> >>> >
> >>> > public class MyType
> >>> > {
> >>> >     @RiakKey
> >>> >     private String myKey;
> >>> >     private String property1;
> >>> >     private String property2;
> >>> >
> >>> >     /*  Getters / Setters go here */
> >>> > }
> >>> >
> >>> > When the object mapper deserializes the results into
> Collection<MyType>,
> >>> > none of the types have the myKey property populated in them. When I
> debugged
> >>> > the calls made by riak I realized that the result of the /mapred
> call does
> >>> > not contain any key information in the body. It only contains the
> value that
> >>> > each key represents. So that explains why the keys are null in the
> result.
> >>>
> >>> The Java client doesn't add the value of the @RiakKey field to the
> value
> >>> stored in riak.
> >>>
> >>> >
> >>> > On the contrary, a link walk in riak returns the Location header for
> >>> > each multipart form entry in the response (Location:
> /riak/bucket/key). So I
> >>> > guess there is at least some way to tweak a client to parse the
> location to
> >>> > get the keys, but you lose out on the map-reduce goodness.
> >>> >
> >>> > Is there some way a map-reduce query can be formed to allow the
> >>> > resulting type's RiakKey to be populated ? What are my options ?
> >>>
> >>> A custom Map function may do what you want. Get the Key from the Key
> Data
> >>> passed to the Map function and add it to the JSON value returned.
> Jackson
> >>> should then take care of de-serialising it into your values.
> >>>
> >>> Cheers
> >>>
> >>> Russell
> >>>
> >>> >
> >>> > Thanks
> >>> > Deepak Bala
> >>> > _______________________________________________
> >>> > riak-users mailing list
> >>> > [email protected]
> >>> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
> >>>
> >>
> >>
> >> _______________________________________________
> >> riak-users mailing list
> >> [email protected]
> >> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
> >>
>
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to