我在主工作流程中创建了子工作流程,并按顺序调用它们,这意味着当一个工作流程完成时,将触发下一个子工作流程,但是在子工作流程失败时,我的主工作流程不会被中止,并且下一个子工作流程被触发。主要工作流程示例如下

<?xml version="1.0"?>
<workflow-app xmlns="uri:oozie:workflow:0.4" name="Mainworkflow_">
  <start to="subworkflow-node-abc"/>
  <action name="subworkflow-node-abc">
    <sub-workflow>
      <app-path>hdfs://link/abc.xml</app-path>
      <configuration>
        <property>
          <name>autoReconnect</name>
          <value>true</value>
        </property>
        <property>
          <name>TableName</name>
          <value>abc</value>
        </property>
        <property>
          <name>targetDirPath</name>
          <value>${targetDirPath}</value>
        </property>
      </configuration>
    </sub-workflow>
    <ok to="subworkflow-node-def"/>
    <error to="kill"/>
  </action>
  <action name="subworkflow-node-def">
    <sub-workflow>
      <app-path>hdfs://def.xml</app-path>
      <configuration>
        <property>
          <name>autoReconnect</name>
          <value>true</value>
        </property>
        <property>
          <name>TableName</name>
          <value>def</value>
        </property>
        <property>
          <name>targetDirPath</name>
          <value>${targetDirPath}</value>
        </property>
      </configuration>
    </sub-workflow>
    <ok to="end"/>
    <error to="kill"/>
  </action>
  <kill name="kill">
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
  </kill>
  <end name="end"/>
</workflow-app>

因此,在上面的示例中,第二个工作流程被触发。任何人都可以说出终止该主要工作流的方法,以防其中止。

最佳答案

你可以使用Decision Control Node

例如,如果suv-workflow的输出不存在-发送到结束/失败。

关于hadoop - 子工作流程失败时如何中止oozie工作流程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22632731/

10-16 02:04