有没有办法在Oozie中全局使用config-default.xml?

时间:2017-09-14 13:19:21

标签: oozie

documentation开始,config-default.xml必须显示在工作流工作区中。

- /workflow.xml
- /config-default.xml
|
- /lib/ (*.jar;*.so)

问题

我已创建自定义Oozie操作,并尝试将retry-maxretry-interval的默认值添加到所有自定义操作。 所以我的workflow.xml将如下所示:

<workflow-app xmlns="uri:oozie:workflow:0.3" name="wf-name">
<action name="custom-action" retry-max="${default_retry_max}" retry-interval="${default_retry_interval}">
</action>

config-default.xml文件包含default_retry_maxdefault_retry_interval的值。

我尝试了什么

  1. config-default.xml放入每个工作流工作区。这样可行,但问题是到处都会有这个文件。

  2. 设置oozie.service.LiteWorkflowStoreService.user.retry.maxoozie.service.LiteWorkflowStoreService.user.retry.inteval也有效,但会影响所有操作类型。

  3. 我也看了Global Configurations,但它没有解决这个问题。

  4. 我认为应该有一种方法可以将config-default.xml放到oozie.libpath,只有那些使用此libpath的工作流会受到影响。

1 个答案:

答案 0 :(得分:1)

AFAIK,遗憾的是没有干净的方法。

您可能对最近创建的功能请求感兴趣:https://issues.apache.org/jira/browse/OOZIE-3179

唯一对我有用的是使用shell步骤开始工作流程,该步骤使用存储在hdfs中的脚本。此脚本包含集中配置。该脚本如下所示:

#!/bin/sh
echo "oozie.use.system.libpath=true"
echo "hbase_zookeeper_quorum=localhost"
.. etc other system or custom variables ..

是的,脚本只是将变量打印到stdout。 让我们说shell步骤操作被称为&#34; global_config&#34;。以下所有步骤都可以使用以下语法获取变量:

${wf:actionData('global_config')['hbase_zookeeper_quorum']}

... HTH