GenericOptionsParser を介して複数の構成パラメーターを Hadoop ジョブに渡したいと考えています。
「-D abc=xyz」を使用すると、1 つの引数を渡すことができ、構成オブジェクトから同じ引数を取得できますが、複数の引数を渡すことはできません。
複数の引数を渡すことは可能ですか?もしそうなら、どのように?
GenericOptionsParser を介して複数の構成パラメーターを Hadoop ジョブに渡したいと考えています。
「-D abc=xyz」を使用すると、1 つの引数を渡すことができ、構成オブジェクトから同じ引数を取得できますが、複数の引数を渡すことはできません。
複数の引数を渡すことは可能ですか?もしそうなら、どのように?
パラメータを次のように渡しました-D color=yellow -D number=10
run()メソッドに次のコードがありました
String color = getConf().get("color");
System.out.println("color = " + color);
String number = getConf().get("number");
System.out.println("number = " + number);
以下はコンソールのo/pでした
color = yellow
number = 10
最近、Hadoop 1.2.1 から Hadoop 2.4.1 にアップグレードした後、この問題に遭遇しました。問題は、Cassandra 2.0.5 から取り込まれた commons-cli 1.1 との競合により、Hadoop の commons-cli 1.2 への依存関係が省略されていたことです。
ソースをざっと見てみると、値の数が初期化されていない commons-cli オプションのように見えます (Hadoop の GenericOptionsParser が行うこと) デフォルトでは、バージョン 1.1 では制限が 1 で、1.2 では制限がありません。
それが役立つことを願っています!
複数のパラメーターを渡すことをテストし、-D
フラグを複数回使用しました。
$ HADOOP_HOME / bin / hadoop jar /path/to/my.jar -D mapred.heartbeats.in.second = 80 -D mapred.map.max.attempts = 2 ... `
これを行うと、値がジョブの構成で指定した値に変更されました。