1
如何將Oozie配置值傳遞給工作流操作?如何將Oozie配置傳遞給工作流操作,如Hive?
例如,Oozie的知道作業服務器的URL:
# oozie admin -oozie localhost:10000 -configuration | fgrep tracker
oozie.actions.default.job-tracker : server1:8080
現在workflow.xml,我們發現:
<action name="hive-5228" cred="hcat">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
[... deleted parameters for clarity ...]
</hive>
<ok to="hive-38fe"/>
<error to="email-c6f0"/>
</action>
目前,$ {}的JobTracker在一個Java硬編碼屬性文件,因爲Oozie已經知道作業跟蹤器URL,所以複製這些信息。是否可以從worklow.xml文件中引用Oozie配置?我嘗試了以下方法來避免vail:
<job-tracker>${oozie.actions.default.job-tracker}</job-tracker>
這會返回一個錯誤,指出未定義變量'oozie'。
我想避免爲DEV,QA和PROD創建特定的屬性文件,因爲Oozie已經知道環境的特定配置,所以我希望它將數據傳遞給協調者和工作流。
我試過了,它不起作用。使用Oozie 4.1.0-cdh5.5.2。 –
按照https://oozie.apache.org/docs/3.3.1/WorkflowFunctionalSpec.html#a4.1_Workflow_Job_Properties_or_Parameters,它看起來像你不能直接訪問*標識*格式的屬性,但是使用wf:conf(property)來訪問它。我不知道爲什麼你正在閱讀的變量無法訪問。可能你可以嘗試訪問'wf:conf {'job-tracker'}'而不是?跳過'oozie.actions.default' – rahulbmv
我試過'$ {wf:conf {'job-tracker'}}',它也失敗了。看起來像'$ {wf:conf()}'僅適用於開始作業時作爲參數傳遞的值,即使用-D標誌或提供的屬性文件。 Oozie配置不會縫合以供工作流程使用。 –