如何在Oozie中执行一个特定的工作流操作.如果我手动杀死了Oozie工作流程



我在Oozie工作流下面有,假设我在执行操作"Do_task1"时手动杀死了作业,但尽管手动杀死了oozie作业,我仍然想执行操作"Do_task2"(当操作"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>

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

oozie.wf.rerun.failnodes=true 

如果已配置此属性,则在执行命令后:

oozie job -rerun jobId

它将从"Do_task1"而不是"Do_task2"使用旧属性重新启动工作流。

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

 <start to = "Do_task2"/> 

,然后再次运行工作流。

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

oozie job -oozie http://localhost:8080/oozie -rerun <FailedOrKilledWorkflowId> -action <actionName or actionId>

相关内容

最新更新