繁体   English   中英

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

[英]How to pass Oozie configuration to workflow actions, such as Hive?

如何将 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>

目前,${jobTracker} 被硬编码在 Java 属性文件中,复制信息,因为 Oozie 已经知道作业跟踪器 URL。 是否可以从 worklow.xml 文件中引用 Oozie 配置? 我尝试了以下方法无效:

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

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

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

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

如果您不想在每个工作流中都定义名称节点作业跟踪器,则只需在 Oozie 服务配置 ( oozie-site ) 中添加以下属性:

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

它使用Oozie 4.2.0对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM