WordCount en Perl
Esta sección incluye el código fuente y las instrucciones para ejecutar el ejemplo WordCount escrito en Perl.
A continuación se muestra el código fuente del mapeador. Guarda este código en un archivo llamado '
WordCount_mapper.pl:#!/usr/bin/env perl
foreach (<STDIN>) {
my @pair = split("\t", $_);
my @words = split(" ", $pair[1]);
foreach (@words) {
print "$_\t1\n";
}
}A continuación se muestra el código fuente del reductor. Guarda este código en un archivo llamado '
WordCount_reducer.pl:#!/usr/bin/env perl
my $word = "";
my $sum = 0;
my $key = "";
my $value = "";
foreach (<STDIN>) {
my @pair = split("\t", $_);
$key = $pair[0];
$value = $pair[1];
if ($key eq $word) { $sum += $value; }
else {
if ($word ne "") { print "$word\t$sum\n"; }
$word = $key;
$sum = 1;
}
}
if ($key ne "") { print "$key\t$sum\n"; }Para ejecutar este ejemplo para los datos almacenados en la tabla words1 (que incluye las columnas id y sentence) dentro de la base de datos '
mapreduce_db ', ejecute el siguiente comando:mapreduce jar /nz/export/ae/products/netezza/mapreduce/current/mapreducestreaming.
jar
-db mapreduce_db
-input 'words1' 'id' 'sentence'
-output 'results' 'word' 'count'
-mapper 'WordCount_mapper.pl'
-mapper_out_key_size 20
-mapper_out_value_size 20
-file <path to WordCount_mapper.pl file>
-reducer 'WordCount_reducer.pl'
-reducer_out_key_size 20
-reducer_out_value size 20
-file <path to WordCount_reducer.pl file>Tras la ejecución, el comando crea una tabla ' results ' que contiene dos columnas: word y ' count, ambas de tipo VARCHAR(20).