[英]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.