Oozie:传播配置不起作用
Oozie: propagate-configuration does not work
我可能遗漏了一些东西,因为 propagate-configuration
似乎对我不起作用。
我有一个基本工作流 base.xml
,配置为:
<global>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<job-xml>application-config.xml</job-xml>
<configuration>
<property>
<name>paths.prefix.metadata</name>
<value>${nameNode}${fimProcessingMetadataPath}</value>
</property>
</configuration>
</global>
在这个文件中,我定义了如下子工作流程:
<action name="srv_a">
<sub-workflow>
<app-path>${nameNode}${workflowPath}/a.xml</app-path>
<propagate-configuration />
</sub-workflow>
<ok to="b" />
<error to="kill" />
</action>
<action name="srv_b">
<sub-workflow>
<app-path>${nameNode}${workflowPath}/b.xml</app-path>
<propagate-configuration />
</sub-workflow>
<ok to="c" />
<error to="kill" />
</action>
// Here there are many sub-workflows like these.
但是在我的代码中,我找不到 paths.prefix.metadata
属性 - 它找不到。
java.lang.IllegalArgumentException: Mandatory property property is not set.
Please provide paths.prefix.metadata
如果我在a.xml
中再次定义它作为它自己的属性,我可以访问它。
那么,如何将此变量从 base.xml
定义传播到子工作流?据我了解 documentation:
The propagate-configuration flag, if present, indicates that the workflow job configuration should be propagated to the child workflow.
但它似乎没有到达子工作流程。为什么?全局配置不会传播到子子工作流,这不是预期的行为吗?
我运行陷入同样的问题。经过一些混乱之后,我发现工作的解决方法是在基础 xml 的子工作流中添加一个配置部分。配置部分中的属性将向下传递到子工作流,例如:
...
<action name="srv_b">
<sub-workflow>
<app-path>a.xml</app-path>
<propagate-configuration />
<configuration>
<property>
<name>paths.prefix.metadata</name>
<value>${nameNode}${fimProcessingMetadataPath}</value>
</property>
...
</configuration>
</sub-workflow>
</action>
仅适用于传递 job.properties 文件。
要将全局部分的变量传递给子工作流,我们需要在内部传递
子工作流程的一部分。
我可能遗漏了一些东西,因为 propagate-configuration
似乎对我不起作用。
我有一个基本工作流 base.xml
,配置为:
<global>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<job-xml>application-config.xml</job-xml>
<configuration>
<property>
<name>paths.prefix.metadata</name>
<value>${nameNode}${fimProcessingMetadataPath}</value>
</property>
</configuration>
</global>
在这个文件中,我定义了如下子工作流程:
<action name="srv_a">
<sub-workflow>
<app-path>${nameNode}${workflowPath}/a.xml</app-path>
<propagate-configuration />
</sub-workflow>
<ok to="b" />
<error to="kill" />
</action>
<action name="srv_b">
<sub-workflow>
<app-path>${nameNode}${workflowPath}/b.xml</app-path>
<propagate-configuration />
</sub-workflow>
<ok to="c" />
<error to="kill" />
</action>
// Here there are many sub-workflows like these.
但是在我的代码中,我找不到 paths.prefix.metadata
属性 - 它找不到。
java.lang.IllegalArgumentException: Mandatory property property is not set.
Please provide paths.prefix.metadata
如果我在a.xml
中再次定义它作为它自己的属性,我可以访问它。
那么,如何将此变量从 base.xml
定义传播到子工作流?据我了解 documentation:
The propagate-configuration flag, if present, indicates that the workflow job configuration should be propagated to the child workflow.
但它似乎没有到达子工作流程。为什么?全局配置不会传播到子子工作流,这不是预期的行为吗?
我运行陷入同样的问题。经过一些混乱之后,我发现工作的解决方法是在基础 xml 的子工作流中添加一个配置部分。配置部分中的属性将向下传递到子工作流,例如:
...
<action name="srv_b">
<sub-workflow>
<app-path>a.xml</app-path>
<propagate-configuration />
<configuration>
<property>
<name>paths.prefix.metadata</name>
<value>${nameNode}${fimProcessingMetadataPath}</value>
</property>
...
</configuration>
</sub-workflow>
</action>
仅适用于传递 job.properties 文件。 要将全局部分的变量传递给子工作流,我们需要在内部传递 子工作流程的一部分。