在决策节点中传递变量时出现问题。参数在全局配置下声明
<global>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${yarnQueueName}</value>
</property>
<property>
<name>currentDate</name>
<value>${replaceAll(timestamp(), "T(\d{2}):(\d{2})Z", "")}</value>
</property>
</configuration>
</global>
但是当";currentDate";在决策节点下使用,无法解析。
<decision name="checkFile">
<switch>
<case to="an-email">
${fs:exists('/user/svc-pmdi/tmp/delta_Combination_'+currentDate+'.csv')}
</case>
<default to="end"/>
</switch>
</decision>
我遇到的错误错误代码:EL_Error错误消息:变量[currentDate]无法解析
我的第一个惊喜。。可能是在犯愚蠢的错误。请帮帮我。
您不应该在全局配置块中为workflow.xml声明参数。在您的情况下,您可以使内联,此外,您必须将"+"更改为concat((
<decision name="checkFile">
<switch>
<case to="an-email">
${fs:exists(concat(concat('/user/svc-pmdi/tmp/delta_Combination_', replaceAll(timestamp(), "T(\d{2}):(\d{2})Z", "")), '.csv'))}
</case>
<default to="end"/>
</switch>
</decision>
您可以在块<参数>在workflow.xml的开头。但是只有静态字符串可以存储在那里。文档链接:https://oozie.apache.org/docs/4.3.1/WorkflowFunctionalSpec.html#a4_Parameterization_of_Workflows