问题描述
在决策节点中传递变量时遇到问题。参数在全局配置下声明
<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>
但是在Decision节点下使用“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]
我的第一个 oozie worflow..可能犯了愚蠢的错误。 请帮帮我。
解决方法
您不应在全局配置块中为工作流.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>
您可以创建自定义参数以在工作流.xml 开头的块