2017-12-05 16 views
0

AWS docsは、このプロパティが「ジョブフローステップ実行時に設定されるJavaプロパティのリストです。これらのプロパティを使用して、JARファイルのメイン関数にキーと値のペアを渡すことができます。HadoopJarStepConfig.StepPropertiesの使用方法は?

しかし、どのように正確にそれらが渡されたか、主要な機能側でキーと値のペアのコレクションに正しくアクセスする方法については説明がありません(少なくとも、私は何も見つかりませんでした)。

クイックチェックでは、環境変数もコマンドライン引数も渡されないことが証明されました。別の方法かもしれない?

答えて

1

さて、このマップはJavaシステムのプロパティになり、System.getProperties()呼び出しによって主な機能側からアクセスできるようですが、明らかではない意味があります。

最初に気に留めておくべきことは、内部的には、環境変数HADOOP_CLIENT_OPTSを介して-Dkey = valueスイッチとして設定されることです。しかし、EMRはシェルルールによってキーや値を適切にエスケープすることはありません。

また、印刷できない文字を含むプロパティがある場合は構文エラーは報告されません。それらを完全に設定することは省略されます。そして、*のような特別なシェル文字ではさらに悪化します。 ()とそのような - それは適切な説明なしでタスクの実行に失敗し、ログレコードは、EMR内部シェルスクリプトラッパーの内部の深くeval()コールの構文エラーをあいまいにするだけであることをあいまいに示します。

この動作についてご注意ください。

プロパティはシェルエスケープする必要があります。場合によっては、シェルエスケープする必要があります。