0

我有以下 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>
4

2 回答 2

1

一旦通过终止第一个操作来终止 oozie 工作流,除非在属性文件中将此属性设置为 true,否则无法重新启动它。

oozie.wf.rerun.failnodes=true 

如果你已经配置了这个属性,在执行命令后:

oozie job -rerun jobId

它将从“Do_task1”而不是“Do_task2”重新启动具有旧属性的工作流。

或者另一种只执行第二个动作的方法是:set

 <start to = "Do_task2"/> 

并再次运行工作流。

于 2019-01-31T15:26:50.433 回答
0

您可以触发特定的 oozie 操作。

oozie job -oozie http://localhost:8080/oozie -rerun <FailedOrKilledWorkflowId> -action <actionName or actionId>
于 2020-10-06T16:02:49.660 回答