如何将Oozie配置传递给工作流操作,例如Hive?

时间:2016-03-07 17:59:35

标签: hadoop hive oozie

如何将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已经知道环境的特定配置,我希望它将数据传递给协调器和工作流。

2 个答案:

答案 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 对我有用。