Как разветвить три разных задания, которые используют один и тот же общий workflow.xml с разным списком параметров?

Я новичок в экосистеме Hadoop. Я пытаюсь разветвить три разных задания, которые я хочу вызывать из одного и того же общего файла 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_path, output_path, учетные данные, которые отличаются для всех трех процессов aa, bb, cc. Как я могу распространить это на каждый из трех подпроцессов?

Спасибо.


person Blank    schedule 05.10.2016    source источник


Ответы (1)


Вы можете использовать тег 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>
person YoungHobbit    schedule 05.10.2016