在我的用例中,协调器操作的输出在下一次迭代中使用,因此如果其中一个失败,则未完成/损坏的数据将被输入到下一个协调器操作中。
如果协调员操作中的某个工作流程步骤失败,有没有办法暂停Oozie协调员?
例如,而不是:
<action name="Delete_TMP_Files">
<fs>
<delete path='${outputPath}*'/>
</fs>
<ok to="End"/>
<error to="Kill"/>
</action>
我们可以这样做:
<action name="Delete_TMP_Files">
<fs>
<delete path='${outputPath}*'/>
</fs>
<ok to="End"/>
<error to="Suspend"/>
</action>
因此可以在下一个协调器操作覆盖其输出之前诊断错误吗?
PS:fs&gt;删除不是这里的实际用例,只是一个例子。
答案 0 :(得分:1)
您无法根据工作流程的失败(来自协调员操作)暂停协调员。
如果工作流程的输出具有某种模式,那么您可以使用它并在工作流程开始时进行检查。
否则,您可以始终touch
将文件作为工作流中的最后一个操作,只要成功,并且在失败的情况下,删除(如果是相同的文件,而不是基于日期)。使用与工作流程中第一次检查相同的文件,然后进行相应操作。最初,您可能需要手动创建文件。
您可以在发生故障时使用电子邮件操作并获得通知。
这只是一种解决方法。