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