如何使用相同的通用workflow.xml分别使用不同的参数列表来分派三个不同的作业?

如何使用相同的通用workflow.xml分别使用不同的参数列表来分派三个不同的作业?

问题描述:

我是hadoop生态系统的初学者。我正在尝试分派三个不同的作业,我想从同一个通用workflow.xml文件中调用,但将不同的参数传递给每个子工作流程。如何使用相同的通用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> 

我想传递的像源,input_path,output_path,凭证这是所有三个过程AA,BB,CC不同的参数列表。我该如何传播这三个子工作流程中的每一个?

谢谢。

您可以使用子工作流操作的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>