Как выполнить одно конкретное действие рабочего процесса в Oozie. Если я убил рабочий процесс Oozie вручную?
У меня ниже рабочий процесс Oozie. Предположим, я вручную убил задание, когда выполнялось действие "Do_task1", но все же я хочу выполнить действие "Do_task2", несмотря на то, что вручную убивал задание oozie (когда выполнялось действие "Do_task1"). Как я могу это сделать?
<workflow-app name="simple-Workflow"
xmlns="uri:oozie:workflow:0.4">
<start to = "Do_task1" />
<!—Step 1 -->
<action name = "Do_task1">
<hive xmlns = "uri:oozie:hive-action:0.4">
<job-tracker>xyz.com:8088</job-tracker>
<name-node>hdfs://rootname</name-node>
<script>hdfs_path_of_script/external.hive</script>
</hive>
<ok to = "Do_task2" />
<error to = "kill_job" />
</action>
<!—Step 2 -->
<action name = "Do_task2">
<hive xmlns = "uri:oozie:hive-action:0.4">
<job-tracker>xyz.com:8088</job-tracker>
<name-node>hdfs://rootname</name-node>
<script>hdfs_path_of_script/orc.hive</script>
</hive>
<ok to = "end" />
<error to = "kill_job" />
</action>
<kill name = "kill_job">
<message>Job failed</message>
</kill>
<end name = "end" />
</workflow-app>
1 ответ
После того, как рабочий процесс oozie будет уничтожен путем уничтожения первого действия, его нельзя будет перезапустить, если для этого свойства не установлено значение true в файле свойств.
oozie.wf.rerun.failnodes=true
Если вы настроили это свойство, после выполнения команды:
oozie job -rerun jobId
Он перезапустит рабочий процесс из "Do_task1", а не из "Do_task2" со старыми свойствами.
Или другой способ выполнить только второе действие: установить
<start to = "Do_task2"/>
и снова запустите рабочий процесс.
Вы можете запустить это конкретное действие oozie.
oozie job -oozie http://localhost:8080/oozie -rerun <FailedOrKilledWorkflowId> -action <actionName or actionId>