如何在oozie中执行一个特定的工作流操作如果我手动杀了oozie?

iugsix8n  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(383)

我有下面的oozie工作流,假设我在执行操作“do\u task1”时手动终止了作业,但仍然希望在手动终止oozie作业(在运行操作“do\u task1”时)的情况下执行操作“do\u task2”。我该怎么做?

<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>
uz75evzq

uz75evzq1#

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

oozie.wf.rerun.failnodes=true

如果已配置此属性,则在执行命令后:
oozie作业-重新运行作业ID
它将使用旧属性从“do\u task1”而不是“do\u task2”重新启动工作流。
或者另一种只执行第二个操作的方法是:set

<start to = "Do_task2"/>

然后再次运行工作流。

ru9i0ody

ru9i0ody2#

你可以触发特定的oozie动作。

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

相关问题