Ausführungsparameter

Das Map/Reduce-Streaming wird mit dem Befehl " mapreduce jar ausgeführt. Beim Ausführen müssen Sie auch den Pfad zum Map/Reduce-Streaming-Jar angeben. Für jeden Streaming-Aufruf muss mindestens ein Mapper-Auftrag angegeben werden. Es folgt die Syntax für den Befehl mapreducestreaming.jar:
mapreduce jar /nz/export/ae/products/netezza/mapreduce/current/mapreducestreaming.
jar
-db <db>
-input <table name> <key_column> <value column>
-output <output_table> <key_column> <value_column>
-mapper <mapper_cmd>
-mapper_out_key_size <size>
-mapper_out_value_size <size>
-reducer <reducer_cmd>
-reducer_out_key_size <size>
-reducer_out_value_size <size>
-file <file>
In der folgenden Tabelle werden die erforderlichen Parameter beschrieben.
Tabelle 1. Erforderliche Parameter für den mapreduce jar-Befehl
Parameter Beschreibung
db Gibt den Namen der Datenbank an, die Eingabedaten enthält.
Eingabe<table_name><key_column><value_column> Gibt den Namen der Tabelle an, die die Eingabedaten enthält, sowie die Namen der Spalten, in denen die Schlüssel- und Wertdaten gespeichert sind.
output <table_name> <key_column> <value_column> Gibt den Namen der Tabelle an, in der die Ausgabedaten gespeichert werden sollen, gefolgt von den Namen der Schlüssel- und Wertspalten.
Mapper Führt den Zuordnungsschritt auf der SPU aus.
mapper_out_key_size Gibt die Größe (Anzahl der Zeichen) der Ausgabeschlüsselspalte an, die nach dem Zuordnungsschritt erstellt wird.
mapper_output_value_size Gibt die Größe (Anzahl der Zeichen) der Ausgabewert-Spalte an, die nach dem Zuordnungsschritt erstellt wird.
Die Schritte Kombinieren und Reduzieren sind optional. Sie können durch die Angabe der folgenden Parameter definiert werden.
Tabelle 2. Parameter für das optionale Kombinieren und Reduzieren
Parameter Beschreibung
kombinierer Führt den Kombinationsschritt auf der SPU aus.

combiner_out_key_size

Gibt die Größe (Anzahl der Zeichen) der Ausgabeschlüsselspalte an, die nach dem Kombinationsschritt erstellt wird.
combiner_output_value_size Gibt die Größe (Anzahl der Zeichen) der Spalte für den Ausgabewert an, die nach dem Kombinationsschritt erstellt wird. reducer Führt den Schritt reduce auf der SPU aus.
reduzierer_out_key_size Gibt die Größe (Anzahl der Zeichen) der Ausgabeschlüsselspalte an, die nach dem Reduzierungsschritt erstellt wird.
reducer_output_value_size Gibt die Größe (Anzahl der Zeichen) der Ausgabewert-Spalte an, die nach dem Reduzierungsschritt erstellt wird.

Sie müssen den Dateiparameter (angegeben durch die Syntax des Streaming-Befehls) verwenden, um jede Datei anzugeben, für die Sie Mapper/Combiner/Reducer-Befehle ausführen möchten. Mehrere Dateiparameter sind zulässig. Alle Dateien werden in ein temporäres Verzeichnis kopiert, das für die SPUs zugänglich ist.

Innerhalb des Streaming-Programms besteht eine Zeile der Ein- und Ausgabe aus Schlüssel- und Werteinträgen, die durch ein Tabulatorzeichen getrennt sind. Sie können jedoch andere Trennzeichen zur Unterscheidung von Schlüssel und Wert definieren, indem Sie die folgenden Parameter angeben.

Tabelle 3. Alternative Trennzeichen
   
Eingangstrennzeichen

mapper_output_separator

Standardmäßig ein Tabulatorzeichen, oder ein beliebiges anderes Symbol.

combiner_output_separator

reducer_output_separator

Ausgangstrennzeichen

mapper_output_separator

Standardmäßig ein Tabulatorzeichen, oder ein beliebiges anderes Symbol.

combiner_output_separator

reducer_output_separator

Parameter an den Mapper, Combiner oder Reducer werden über Umgebungsvariablen an die SPUs übergeben. Um Parameter zu übergeben, verwenden Sie die Option cmdenv. Geben Sie zum Beispiel Folgendes ein, um die Umgebungsvariable "NAME" auf der SPU auf den Wert ADAM zu setzen:

-cmdenv "NAME=ADAM"

Die Variable kann anschließend in einem Programm oder Skript mit spezifischen Befehlen für die verwendete Programmiersprache gelesen werden.

Hinweis: Es ist möglich, Streaming-Funktionen mit Standard-Java-Mapper/Reducer/Combiner-Klassen zu kombinieren. Anstatt Parameter für Mapper/Combiner/Reducer zu definieren, geben Sie Parameter für mapperClass/combinerClass/reducerClass mit den entsprechenden Klassennamen an. Alle Java-Klassen sollten in jar-Archiven enthalten sein und über den libJar an das mapreduce_streaming-Executable übergeben werden.