将可选属性从主oozie工作流程传递到子工作流程

时间:2018-07-13 20:24:57

标签: hadoop oozie oozie-workflow

我有一个HDFS_file_path或属性,需要从工作流1传递到common_subworkflow。

我也有没有该属性或HDFS_file_path的工作流程2。但是工作流程2调用common_subworkflow。

在common_subworkflow中,我使用$ {HDFS_file_path}获取属性值。

由于工作流2中不存在HDFS_file_path,因此当工作流1调用common_subworkflow时工作正常,但当工作流2调用common_subworkflow时失败。

有什么办法

  1. 读取动态属性(如果存在),或者
    1. 如果不存在变量,请设置一些默认值(null或为空)

1 个答案:

答案 0 :(得分:1)

<workflow-app name='hello-wf' xmlns="uri:oozie:workflow:0.4">
    <parameters>
        <property>
            <name>inputDir</name>
        </property>
        <property>
            <name>outputDir</name>
            <value>out-dir</value>
        </property>
    </parameters>
    ...
    <action name='firstjob'>
        <map-reduce>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>com.foo.FirstMapper</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>com.foo.FirstReducer</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>${inputDir}</value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>${outputDir}</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to='secondjob'/>
        <error to='killcleanup'/>
    </action>
    ...
</workflow-app>

在上面的示例中,如果未指定inputDir,则Oozie将打印错误消息,而不是提交作业。如果未指定= outputDir =,则Oozie将使用默认值out-dir。

取自https://oozie.apache.org/docs/3.3.1/WorkflowFunctionalSpec.html#a4.1_Workflow_Job_Properties_or_Parameters