我安排了一个协调员,该协调员启动了许多单独的工作流程。这是一个回填协调员,过去有startdate和enddate。
由于输入数据集的临时问题,这些作业中有一小部分失败了,现在我需要重新运行这些工作流程(无需重新运行成功的工作流程)。这些不成功的工作流程具有各种状态:KILLED,FAILED和SUSPENDED。
这样做的最佳方式是什么?
答案 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")