如果协调器操作失败,如何暂停 Oozie 协调器?

How to suspend Oozie coordinator if a coordinator action fails?

在我的用例中,下一次迭代使用协调器操作的输出,因此如果其中一个失败,unfinished/corrupted 数据将被送入下一个协调器操作。

如果协调器操作中的工作流步骤之一失败,是否有任何方法可以暂停 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 将文件作为工作流中的最后一个操作,无论何时成功,如果失败,则删除(如果是同一文件,不基于日期)。使用与工作流程中的第一次检查相同的文件并相应地进行。最初,您可能需要手动创建文件。

如果失败,您可以使用电子邮件操作并得到通知。

这只是解决方法。