This is an old revision of the document!
MapReduce Tutorial : Basic reducer
The interesting part of a MR job is the reducer – after all mappers produce the (key, value) pairs, for every unique key and all its values a reduce function is called. The reduce function can output (key, value) pairs, which are written to disk.
The reduce is similar to map, but instead of one value it gets an iterator, which can enumerate all values:
- reducer.pl
package Mapper; use Moose; with 'Hadoop::Mapper'; sub map { my ($self, $key, $value, $context) = @_; $context->write($key, $value); } package Reducer; use Moose; with 'Hadoop::Reducer'; sub reduce { my ($self, $key, $values, $context) = @_; while ($values->next) { $context->write($key, $values->value); } } package Main; use Hadoop::Runner; my $runner = Hadoop::Runner->new( mapper => Mapper->new(), reducer => Reducer->new()); $runner->run();
