WordCount in Python
Dieser Abschnitt enthält den Quellcode und die Anweisungen zum Ausführen des in Python geschriebenen WordCount.
Nachfolgend finden Sie den Quellcode für den Mapper. Speichern Sie diesen Code in einer Datei mit dem Namen "
WordCount_mapper.py
:#!/usr/bin/env python
import sys
for line in sys.stdin:
(key,value) = line.split('\t')
wordList = value.split(' ')
for word in wordList:
print(word.strip() + "\t1")
Nachfolgend finden Sie den Quellcode für den Reducer. Speichern Sie diesen Code in einer Datei mit dem Namen "
WordCount_reducer.py
:#!/usr/bin/env python
import sys
word = ""
sum = 0
for line in sys.stdin:
(key,value) = line.split('\t')
if word == key:
sum = sum + int(value)
else:
if word != "":
print(word + "\t" + str(sum))
word = key
sum = 1
if key != "": print(key + "\t" + str(sum))
Um dieses Beispiel für Daten auszuführen, die in der Tabelle words1 (die die Spalten "
id
und " sentence
enthält) in der Datenbank " mapreduce_db
gespeichert sind, führen Sie den folgenden Befehl aus: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.py'
-mapper_out_key_size 20
-mapper_out_value_size 20
-file <path to WordCount_mapper.py file>
-reducer 'WordCount_reducer.py'
-reducer_out_key_size 20
-reducer_out_value size 20
-file <path to WordCount_reducer.py file>
Nach der Ausführung erstellt der Befehl eine Tabelle ' results
mit zwei Spalten: word
und ' count
, beide vom Typ VARCHAR(20).