実行パラメーター

Map/Reduceストリーミングは'mapreduce jarコマンドを使って実行される。 実行時には、Map/Reduceストリーミングjarへのパスも指定する必要がある。 各ストリーミング呼び出しには、少なくとも1つのマッパージョブが指定されていなければならない。 以下は 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>
次の表は、必要なパラメータについて説明したものである。
表 1. mapreduce jarコマンドに必要なパラメータ
パラメーター 説明
db 入力データを含むデータベースの名前を指定する。
入力<table_name><key_column><value_column> 入力データが格納されているテーブルの名前と、キーと値のデータが格納されている列の名前を指定する。
出力 <テーブル名> <キー_カラム> <値_カラム 出力データが格納されるテーブルの名前と、それに続くキーと値のカラム名を指定する。
マッパー SPUでマップステップを実行する。
マッパー・アウト・キー・サイズ マップ・ステップの後に作成される出力キー列のサイズ(文字数)を指定する。
マッパー出力値サイズ マップ・ステップの後に作成される出力値列のサイズ(文字数)を指定する。
コンバインとリデュースのステップはオプションである。 これらは、以下のパラメータを指定して定義することができる。
表 2. オプションのコンバインとリデュースのパラメータ
パラメーター 説明
コンバイナー SPUでコンバインステップを実行する。

コンバイナー・アウト・キー・サイズ

結合ステップの後に作成される出力キー列のサイズ(文字数)を指定する。
コンバイナー出力値サイズ 結合ステップの後に作成される出力値列のサイズ(文字数)を指定する。 reducerはSPU上でreduceステップを実行します。
reducer_out_key_size 縮小ステップの後に作成される出力キー列のサイズ(文字数)を指定します。
reducer_output_value_size 縮小ステップの後に作成される出力値列のサイズ(文字数)を指定します。

マッパー/コンバイナー/レデューサーコマンドを実行したい各ファイルを指定するには、(ストリーミングコマンド構文で指定される)fileパラメータを使用する必要があります。 複数のファイル・パラメーターを使用することができる。 すべてのファイルは、SPUからアクセス可能な一時ディレクトリにコピーされる。

ストリーミング・プログラムでは、1行の入出力は、タブ文字で区切られたキーと値の項目で構成される。 しかし、以下のパラメータを指定することで、キーと値を区別するために使用する他のセパレータを定義することができる。

テーブル3。 代替セパレーター
   
入力セパレータ

マッパー出力セパレーター

デフォルトではタブ文字、または任意の記号に設定。

コンバイナー出力セパレーター

reducer_output_separator

出力セパレーター

マッパー出力セパレーター

デフォルトではタブ文字、または任意の記号に設定。

コンバイナー出力セパレーター

reducer_output_separator

マッパー、コンバイナー、リデューサーへのパラメータは、SPUの環境変数を使って渡される。 パラメータを渡すにはcmdenvオプションを使う。 例えば、SPUの環境変数 "NAME "にADAMという値を設定するには、次のように入力する:

-cmdenv "NAME=ADAM"

この変数は、プログラムやスクリプトの中で、使用しているプログラミング言語に特化したコマンドを使って読み取ることができる。

注:ストリーミング機能と標準的なJavaのマッパー/リデューサ/コンバイナークラスを混在させることは可能である。 マッパー/コンバイナー/リデューサーのパラメーターを定義する代わりに、適切なクラス名でmapperClass/combinerClass/reducerClassパラメーターを指定します。 すべてのJavaクラスはjarアーカイブに含まれ、libJarパラメータを通してmapreduce_streaming実行ファイルに渡されなければならない。