在我的用例中,下一个迭代使用协调器 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/

10-12 22:55