任何其他并行运行oozie动作的选项

时间:2018-06-22 20:06:49

标签: hadoop oozie oozie-workflow

目前,我的oozie工作流程中有6个操作,如下所示。

MainJob1完成后,所有第一,第二和第三个作业应并行运行。 MainJob2完成后,仅第二和第三作业应并行运行。

是否有可能解决上述工作流执行方式?

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
  ....
<decision name="execution-mode-decision">
    <switch>
        <case to="MainJob1">${executionMode eq "DEFAULT"}</case>
        <case to="MainJob2">${executionMode eq "INVALID"}</case>
        <default to="MainJob1" />
    </switch>
    </decision>
    <action name="MainJob1">
        <map-reduce>
            .......
        </map-reduce>
        <ok to="fork1"/>
        <error to="kill"/>
    </action>

    <action name="MainJob2">
        <map-reduce>
           ......
        </map-reduce>
        <ok to="fork2"/>
        <error to="kill"/>
    </action>
    ...
    <fork name="fork1">
        <path start="firstparalleljob"/>
        <path start="secondparalleljob"/>
        <path start="thirdparalleljob"/>
    </fork>

   <fork name="fork2">
        <path start="secondparalleljob"/>
        <path start="thirdparalleljob"/>
    </fork>
    <action name="firstparallejob">
        <map-reduce>
         ...........
        <ok to="joining"/>
        <error to="kill"/>
    </action>
    <action name="secondparalleljob">
        <map-reduce>
           ........
        </map-reduce>
        <ok to="joining"/>
        <error to="kill"/>
    </action>
    <action name="thirdparalleljob">
        <map-reduce>
           ........
        </map-reduce>
        <ok to="joining"/>
        <error to="kill"/>
    </action>
    <join name="joining" to="emailFailure"/>
    ...
</workflow-app>

1 个答案:

答案 0 :(得分:1)

您可以将firstparalleljob,secondparalleljob和Thirdparalleljob放在单独的3个子工作流程中,然后在第一个fork中调用3个子工作流程,在下一个fork中调用2个子工作流程。这样,我们甚至可以在同一动作的不同派生时间将不同的值传递给变量。