このトピックでは、MaxComputeクライアントでJARコマンドを実行してMapReduceジョブを送信する方法について説明します。
MaxComputeクライアントは、MapReduceジョブを送信するためのJARコマンドを提供します。 例:
jar -conf \home\admin\myconf -resources a.txt,example.jar -classpath ..\lib\example.jar:.\other_lib.jar -D java.library.path=.\native;構文
jar [<GENERIC_OPTIONS>] <MAIN_CLASS> [ARGS];
-conf <configuration_file>
-resources <resource_name_list>
-classpath <local_file_list>
-D <name>=<value>
-l パラメーター
<GENERIC_OPTIONS>には、次のオプションパラメーターが含まれます。-conf <configuration file>: JobConf設定ファイルを指定します。 このファイルには、SDKのJobConfの設定が含まれています。
次のコードは、JobConfファイルのテンプレートを示しています。
<configuration> <property> <name>import.filename</name> <value>resource.txt</value> </property> </configuration>この例では、値がresource.txtであるimport.filenameという名前の変数がJobConf設定ファイルで指定されています。
MapReduceでJobConfインターフェイスを呼び出して、この変数の値を取得できます。 SDKでJobConfインターフェイスを呼び出して変数値を取得することもできます。 詳細については、「リソースサンプル」をご参照ください。
例:
-- Add a jar to the MaxCompute project environment and submit a jar job. add jar data\mapreduce-examples.jar; jar -resources mapreduce-examples.jar -classpath data\mapreduce-examples.jar org.alidata.odps.mr.examples.WordCount wc_in wc_out; -- Add files and a jar to the MaxCompute project environment and submit a jar job. add file data\src.txt; add jar data\mapreduce-examples.jar; jar -resources src.txt,mapreduce-examples.jar -classpath data\mapreduce-examples.jar org.alidata.odps.mr.examples.WordCount wc_in wc_out; -- Create a new table test_table based on the structure of the table wc_in, add a file, the test_table and the jar to the MaxCompute project environment, then submit a jar job. add file data\a.txt; add table wc_in as test_table; add jar data\work.jar; jar -conf odps-mapred.xml -resources a.txt,test_table,work.jar -classpath data\work.jar:otherlib.jar -D import.filename=resource.txt org.alidata.odps.mr.examples.WordCount args;-resources <resource_name_list>: MapReduceジョブの実行に使用されるリソースを指定します。 ほとんどの場合、resource_name_listでmapまたはreduce関数によって使用されるリソースの名前を指定する必要があります。
説明mapまたはreduce関数が他のMaxComputeリソースを読み取る場合、これらのリソースの名前もresource_name_listに追加する必要があります。
複数のリソースはコンマ (,) で区切る必要があります。 クロスプロジェクトリソースを使用する場合は、resource_name_listの前に
project /resources/を追加します。 例:-resources otherproject/resources/resfilemapまたはreduce関数を使用してリソースを読み取る方法の詳細については、「リソースサンプル」をご参照ください。
-classpath <local_file_list>: MapReduceジョブをローカルモードで実行するために使用されるクラスパスを指定します。 ローカルパスを指定します。 パスには、main関数が配置されているJARパッケージの相対パスと絶対パスの両方が含まれます。
パッケージ名は、デフォルトのファイル区切り文字で区切ります。 ほとんどの場合、Windowsオペレーティングシステムでは、既定のファイル区切り文字としてセミコロン (;) を使用し、Linuxではコンマ (,) を使用します。 クラウドサーバーでMapReduceジョブを実行する場合は、パッケージ名をコンマ (,) で区切ります。
説明may関数は、mapまたはreduce関数と同じパッケージでコンパイルすることをお勧めします。 詳細については、「WordCountサンプル」をご参照ください。 この場合、サンプルプログラムを実行すると、mapreduce-examples.jarは -resourcesオプションと -classpathオプションの両方に含まれます。 ただし、-resourcesオプションは、分散実行のためのmapまたはreduce関数を参照します。 -classpathオプションは、ローカル実行のmain関数を参照します。 指定されたJARパッケージもローカルディレクトリに保存する必要があります。
-D <prop_name >=< prop_value>: ローカル実行用の <mainClass> のJavaプロパティを指定します。 複数のプロパティを指定できます。
-l: MapReduceジョブをローカルモードで実行することを指定します。 このオプションは、プログラムのデバッグに使用されます。
<MAIN_CLASS>: メインクラス。 たとえば、com.example.Mainです。[ARGS]: プログラムのパラメータ (オプション) 。 これらのパラメータは、mainクラスのMainメソッドに渡されます。