1

を使用して、hdp:tool-tasklethadoop でデータ変換ジョブを実行しています。ドキュメントを読むと、実際の実装が呼び出されたときに使用できるようにプロパティを指定できるようです-少なくともツールランナーの場合:

<hdp:tool-runner id="someTool" tool-class="org.foo.SomeTool" run-at-startup="true">
   <hdp:arg value="data/in.txt"/>
   <hdp:arg value="data/out.txt"/>

   **property=value**
</hdp:tool-runner>

ドキュメントには、次のことも記載されています。

(tool) tasklet 要素は、run-at-startup (ワークフローには適用されない) を除いて、 #hadoop:tool-runner[tool-runner] と同じ構成オプションをサポートします。

私のタスクレットは次のように定義されています。

 <hdp:tool-tasklet id="transformTask"
    jar="classpath:hadoop-artifacts/transform-job.jar"
    scope="step">
    <hdp:arg value="#{jobParameters['inputFile']}" />
    <hdp:arg value="${spring.hadoop.fsUri}/${transform.output.path}" />
    ingest.schemaXml=#{jobExecutionContext['schemaXml']}
</hdp:tool-tasklet>

後でBean定義(transform-job.jar内)で使用しようとしています:

<bean id="schemaDecoder" class="com.foo.bar.transform.beans.SchemaDecoder">
    <constructor-arg value="${ingest.schemaXml}"></constructor-arg>
</bean>

そして私は例外を受け取ります:

文字列値「${ingest.schemaXml}」のプレースホルダー「ingest.schemaXml」を解決できませんでした

ただし、hdp:jar-tasklet代わりに を使用してジョブを定義すると、プロパティが伝播されます。私はクラスローダーで他の問題に遭遇します...

私の質問は、ユーザー定義のプロパティはツールタスクレットでサポートされていますか? そうでない場合、私のオプションは何ですか?プロパティの値は実行時に動的に定義されるため、プロパティ ファイルは機能しません。

前もって感謝します、

ミハイ

4

0 に答える 0