0

我有一个 HDFS_file_path 或需要从 workflow-1 传递到 common_subworkflow 的属性。

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

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

它在工作流 1 调用 common_subworkflow 时工作正常,但在工作流 2 调用 common_subworkflow 时失败,因为 HDFS_file_path 在工作流 2 中不存在。

有没有办法

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

1 回答 1

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

于 2018-07-13T21:17:38.807 回答