Florian Ragwitz > Data-Riak-1.3 > Data::Riak::MapReduce

Download:
Data-Riak-1.3.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  1
View/Report Bugs
Module Version: 1.3   Source   Latest Release: Data-Riak-2.0

NAME ^

Data::Riak::MapReduce - A map/reduce query

VERSION ^

version 1.3

SYNOPSIS ^

    my $riak = Data::Riak->new;

    my $mr = Data::Riak::MapReduce->new({
        riak => $riak,
        inputs => [ [ "products8", $arg ] ],
        phases => [
            Data::Riak::MapReduce::Phase::Map->new(
                language => "javascript",
                source => "
                function(v) {
                  var m = v.values[0].data.toLowerCase().match(/\w*/g);
                  var r = [];
                  for(var i in m) {
                    if(m[i] != '') {
                      var o = {};
                      o[m[i]] = 1;
                      r.push(o);
                    }
                  }
                  return r;
                }
                ",
            ),
            Data::Riak::MapReduce::Phase::Reduce->new(
                language => "javascript",
                source => "
                function(v) {
                  var r = {};
                  for(var i in v) {
                    for(var w in v[i]) {
                      if(w in r) r[w] += v[i][w];
                      else r[w] = v[i][w];
                    }
                  }
                  return [r];
                }
                ",
            ),
        ]
    });

    my $results = $mr->mapreduce;

DESCRIPTION ^

A map/reduce query.

ATTRIBUTES ^

inputs

Inputs to this query. There are few allowable forms.

For a single bucket:

  inputs => "bucketname"

For a bucket and key (or many!):

  inputs => [ [ "bucketname", "keyname" ] ]

  inputs => [ [ "bucketname", "keyname" ], [ "bucketname", "keyname2" ] ]

And finally:

  inputs => [ [ "bucketname", "keyname", "keyData" ] ]

phases

An arrayref of phases that will be executed in order. The phases should be one of Data::Riak::MapReduce::Phase::Link, Data::Riak::MapReduce::Phase::Map, or Data::Riak::MapReduce::Phase::Reduce.

METHODS ^

mapreduce

Execute the mapreduce query.

To enable streaming, do the following:

    my $results = $mr->mapreduce(chunked => 1);

AUTHORS ^

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2013 by Infinity Interactive.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: