如何将Oozie配置值传递给工作流操作?
例如,Oozie知道职位跟踪网址:
# 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配置?我尝试了下面的事情,但没有发誓:
<job-tracker>${oozie.actions.default.job-tracker}</job-tracker>
这会返回一个错误,指出变量&#39; oozie&#39;没有定义。
我想避免为DEV,QA和PROD创建特定的属性文件,因为Oozie已经知道环境的特定配置,我希望它将数据传递给协调器和工作流。
答案 0 :(得分:2)
您应该能够使用<job-tracker>${wf:conf('oozie.actions.default.job-tracker')}</job-tracker>
答案 1 :(得分:0)
如果您不想在每个工作流程中定义名称节点和 job-tracker ,则只需在以下位置添加以下属性Oozie服务配置( oozie站点):
oozie.actions.default.name-node=<name-node-value>
oozie.actions.default.job-tracker=<job-tracker-value>
它使用 Oozie 4.2.0 对我有用。