PerlのWordCount
このセクションには、Perlで書かれたWordCountサンプルのソースコードと実行手順が含まれています。
以下はマッパーのソースコードである。 このコードを「
WordCount_mapper.pl
ファイルに保存する:#!/usr/bin/env perl
foreach (<STDIN>) {
my @pair = split("\t", $_);
my @words = split(" ", $pair[1]);
foreach (@words) {
print "$_\t1\n";
}
}
以下はレデューサーのソースコードです。 このコードを「
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"; }
mapreduce_db
データベース内の「words1テーブル(「id」と「sentence」のカラムを含む)に格納されているデータに対してこの例を実行するには、次のコマンドを実行する: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>
実行後、コマンドは2つのカラムを含む'results
テーブルを作成する: word
と'count
、どちらもVARCHAR(20)型である。