如何使用格式的今天日期创建参数:
yyyy-mm-dd
在oozie中。我将此变量传递给hive脚本,该脚本正在添加该日期的分区,我找到了使用以下函数创建timestamp的函数:
<param>DATE=${wf:timestamp()}</param>
应以以下形式返回输出:
(YYYY-MM-DDThh:mm:ss.sZ). I.e.: 1997-07-16T19:20:30.45Z
但我收到错误:
No function is mapped to the name "wf:timestamp"
此外,我只想从时间戳中获取YYYY-MM-DD
,并且没有子字符串函数也可以给我前10个字符串字符。
答案 0 :(得分:8)
对于基本的EL函数,您不需要添加wf
所以它应该是这样的
<param>DATE=${timestamp()}</param>
如果您使用的是coordinator,那么使用可以简单地将新的参数添加到wf中。 它应该看起来像这样
<action>
<workflow>
<app-path>${appPath}</app-path>
<configuration>
<property>
<name>reportDate</name>
<value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1,
'DAY'), "yyyy-MM-dd")}
</value>
</property>
</configuration>
</workflow>
</action>
答案 1 :(得分:0)
您需要使用正则表达式从timestamp()函数中提取日期:
replaceAll(timestamp(), "(\\d{4}-\\d{2}-\\d{2})T\\d{2}:\\d{2}Z", "$1")
由于某种原因,timestamp()似乎以YYYY-MM-DDThh:mmZ的格式返回日期(而不是如上所述的YYYY-MM-DDThh:mm:ss.sZ),因此正则表达式如上所述。 / p>
这应该对您有用,并且不需要使用协调器。