1. ホーム
  2. java

[解決済み] hadoop-env.shを修正する以外にhadoopのシステムプロパティを指定する方法は?

2022-02-07 05:50:27

質問

HADOOPのジョブを実行する際に、システムのプロパティ(HADOOPのプロパティではない)を設定したいのですが、どうすればいいですか?システムプロパティを設定するのは簡単ではないことがわかりました。 シェルで設定しても

export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"

まだ、うまくいきません。hadoopコマンドラインの"-D"オプションはConfigurationのみで、System Propertyには対応していません。そのため、"-D" オプションも動作しません。

どなたかお心当たりのある方、ありがとうございます。

解決方法は?

なぜ、単純に -Dfoo.bar=example のように、コマンドラインからジョブを開始するときにインラインで実行します。

hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument

コードでプロパティを取得するには、次のようにします。 conf.get("foo.bar");


純粋にシステムプロパティとして設定する必要がある場合は、Hadoop configから取得した値を使って、コードの冒頭で以下のように設定します。

String property = conf.get("foo.bar");
System.setProperty("foo.bar", property);