NAME
Data::Riak::MapReduce - A map/reduce query
VERSION
version 2.0
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
Andrew Nelson <anelson at cpan.org>
Florian Ragwitz <rafl@debian.org>
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.