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

时间:2018-06-04 08:46:14

标签: hadoop oozie oozie-coordinator

我安排了一个协调员,该协调员启动了许多单独的工作流程。这是一个回填协调员,过去有startdate和enddate。

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

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

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

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

例如:

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

jobs提供了许多其他子命令,oozie help jobs可以查看这些子命令。希望有所帮助!

答案 1 :(得分:0)

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

首先,解析 shell$ gqlgen generate 的输出以获得给定协调器的给定状态的动作列表:

oozie job -info

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

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