如何分叉三个不同的作业,它们使用相同的generic workflow.xml和不同的参数列表?

xurqigkl  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(390)

我是hadoop生态系统的初学者。我正在尝试分叉三个不同的作业,我想从同一个generic workflow.xml文件中调用它们,但将不同的参数传递给每个子工作流。
子工作流:

<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.4" name="special-fork">

    <global>
        <job-tracker>${jT}</job-tracker>
        <name-node>${nN}</name-node>
    </global>

    <fork name="special-fork">
        <path start="aa"/>
        <path start="bb"/>
        <path start="cc"/>
    </fork>

    <action name="aa">
        <sub-workflow>
            <app-path>${nN}/xyz/workflow.xml</app-path>
            <propagate-configuration/>
        </sub-workflow>
        <ok to="special-join"/>
        <error to="kill"/>
    </action>

    <action name="bb">
        <sub-workflow>
            <app-path>${nN}/xyz/workflow.xml</app-path>
            <propagate-configuration/>
        </sub-workflow>
        <ok to="special-join"/>
        <error to="kill"/>
    </action>

    <action name="cc">
        <sub-workflow>
            <app-path>${nN}/xyz/workflow.xml</app-path>
            <propagate-configuration/>
        </sub-workflow>
        <ok to="special-join"/>
        <error to="kill"/>
    </action>

    <join name="special-join" to="end"/>

    <action name="email-alert-fail">
        <email xmlns="uri:oozie:email-action:0.1">
            <to>${emailing_list}</to>
            <subject>Oozie workflow Failed</subject>
            <body>
            </body>
        </email>
        <ok to="kill"/>
        <error to="kill"/>
    </action>

    <kill name="kill">
        <message>Map-Reduce Failed</message>
    </kill>

    <end name="end"/>
</workflow-app>

我想传递参数列表,比如source、input\u path、output\u path、credentials,这与所有三个进程aa、bb、cc不同。如何将其传播到三个子工作流中的每一个子工作流?
谢谢。

vxbzzdmp

vxbzzdmp1#

你可以用 configuration 标记子工作流操作并传递所需参数。这就是它的样子:(添加所有必需的属性)

<action name="aa">
    <sub-workflow>
        <app-path>${nN}/xyz/workflow.xml</app-path>
        <propagate-configuration/>
        <configuration>
            <property>
               <name>input_path</name>
               <value>your_input_path</value>
            </property>
        </configuration>
    </sub-workflow>
    <ok to="special-join"/>
    <error to="kill"/>
</action>

相关问题