oozie:传播配置不起作用

hof1towb  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(351)

从那以后我可能错过了什么 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 子工作流的定义?我从文件中了解到:
传播配置标志(如果存在)指示应将工作流作业配置传播到子工作流。
但它似乎没有到达子工作流。为什么?全局配置不传播到子工作流不是预期的行为吗?

q43xntqr

q43xntqr1#

我也遇到了同样的问题。经过一番打乱,我发现的解决方法是在basexml的子工作流中添加一个配置部分。配置部分中的属性将被传递给子工作流,例如:

...
<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>
qlfbtfca

qlfbtfca2#

仅适用于传递job.properties文件。要将全局部分的变量传递给子工作流,我们需要在子工作流的部分内部传递。

相关问题