在我的用例中,下一个迭代使用协调器 Action 的输出,因此,如果其中一个失败,则未完成/损坏的数据将被馈送到下一个协调器 Action 。
如果协调器操作中的工作流程步骤之一失败,是否有任何方法可以挂起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> delete不是此处的实际用例,仅是示例。
最佳答案
您不能基于工作流程的失败(通过协调器操作)来挂起协调器。
如果工作流的输出具有特定模式,则可以使用该模式并在工作流开始时对其进行检查。
否则,您可以随时将文件touch
编码为工作流中的最后一个操作,如果操作成功,则在失败的情况下将其删除(如果相同,则不是基于日期)。使用与工作流程中的第一次检查相同的文件,然后继续进行操作。最初,您可能需要手动创建文件。
如果发生故障,您可以使用电子邮件操作并得到通知。
这只是解决方法。
关于hadoop - 如果协调员操作失败,如何暂停Oozie协调员?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38504212/