首页 文章

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

提问于
浏览
2

如何将Oozie配置值传递给工作流操作?

例如,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>

目前,$ 在Java属性文件中被硬编码,因为Oozie已经知道了作业跟踪器URL,所以复制了这些信息 . 是否可以在worklow.xml文件中引用Oozie配置?我试过以下没有誓言:

<job-tracker>${oozie.actions.default.job-tracker}</job-tracker>

这将返回一个错误,指出未定义变量'oozie' .

我想避免为DEV,QA和PROD创建特定的属性文件,因为Oozie已经知道环境的特定配置,我希望它将数据传递给协调器和工作流 .

2 回答

  • 0

    您应该能够使用 <job-tracker>${wf:conf('oozie.actions.default.job-tracker')}</job-tracker> 访问变量数据

  • 2

    如果您不想在每个工作流程中定义 name-nodejob-tracker ,则只需在Oozie服务配置( oozie-site )中添加以下属性:

    oozie.actions.default.name-node=<name-node-value>
    oozie.actions.default.job-tracker=<job-tracker-value>
    

    它使用 Oozie 4.2.0 对我有用 .

相关问题