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

jfewjypa  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(270)

目前我的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>
8qgya5xd

8qgya5xd1#

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

相关问题