2016-10-05 1 views
3

Я начинаю пользоваться системой эко-системы hadoop. Я пытаюсь разбить три разных задания, которые я хочу вызывать из одного и того же родового файла workflow.xml, но передавать разные параметры для каждого из подпоточных процессов.Как раскодировать три разных задания, которые используют один и тот же общий workflow.xml с другим списком параметров?

Sub-Workflow:

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

Я хочу передать список параметров, как источник, input_path, OUTPUT_PATH, полномочий, который отличается от всех трех процессов аа, бб, куб. Как я могу распространить это на каждый из трех суб-Workflow?

Спасибо.

ответ

2

Вы можете использовать тег 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> 
Смежные вопросы