Oozie:在协调器中重新运行所有未成功的工作流

Oozie: rerun all non-SUCCEEDED workflows in coordinator

我安排了一个协调员来启动许多单独的工作流程。这是一个回填协调器,开始日期和结束日期都是过去的。

这些作业中有一小部分由于输入数据集的临时问题而失败,现在我需要重新 运行 这些工作流程(无需重新 运行 成功的工作流程)。这些不成功的工作流程有多种状态:KILLED、FAILED 和 SUSPENDED。

最好的方法是什么?

我不认为整个事情,即具有多个状态的作业,是否可以在单个命令中 运行 但使用 oozie jobs,尽管三个单独的命令可以尝试三种状态。如果其他人有更好的方法,请post它。

oozie jobs filter -jobtype wf -filter status=<status> -resume

例如:

# KILLED
oozie jobs filter -jobtype wf -filter status=SUSPENDED -resume

jobs 还提供了很多其他的子命令,oozie help jobs 可以查看。希望对您有所帮助!

我最终编写了一个 bash 脚本来执行此操作。我不会在这里复制整个脚本,但这是大纲:

首先,解析 oozie job -info 的输出以获取给定协调器具有给定状态的操作列表:

actions=$(oozie job -info $oozie_coord -filter status=$status -len 1000 |
          grep "\-C@" |
          awk '{print }' |
          sed -n "s/^.*@\([0-9]*\).*$//p")

然后循环执行这些操作并发出重新运行命令:

while read -r action; do
  oozie job -rerun $oozie_coord -action $action