oozie5.1 怎么写当天的日期字符串传递给workflow的hive2标签,不要用formatDate函数
时间: 2024-09-14 19:11:27 浏览: 40
Oozie调度SparkSQL样例代码_oozie_hive_
在Oozie 5.1中,如果你不想使用`formatDate`函数来获取当前日期的字符串并传递给Workflow中的`hive2`标签,你可以考虑使用Shell Action来先计算当前日期,然后通过参数传递的方式将日期字符串传递给Hive2 Action。
首先,你可以在Oozie的Workflow定义中添加一个Shell Action,利用shell脚本来计算当前日期并将其输出。然后,使用`<global>`元素定义一个变量来捕获这个输出,最后在`hive2`标签中引用这个变量作为参数。
下面是一个简化的例子:
```xml
<workflow-app xmlns="uri:oozie:workflow:0.5" name="DateWorkflow">
<start to="calculateDate"/>
<action name="calculateDate">
<shell xmlns="uri:oozie:shell-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>echo "date -u +'%Y-%m-%dT%H:%M:%S'" | /bin/bash</exec>
<env-variables>
<property>
<name>DATE_PARAM</name>
<value>DATE</value>
</property>
</env-variables>
</shell>
<ok to="runHive"/>
<error to="fail"/>
</action>
<action name="runHive">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<param>DATE_PARAM=${DATE_PARAM}</param>
<exec>your hive query</exec>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>${jobTracker}</value>
</property>
</configuration>
</hive>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Workflow failed, error message follows</message>
</kill>
<end name="end"/>
</workflow-app>
```
在这个例子中,`calculateDate`的Shell Action执行一个简单的`echo`命令,该命令通过管道传递给`/bin/bash`来输出当前日期和时间的字符串。然后,该字符串通过`DATE_PARAM`环境变量被捕获,并在后续的`hive2` Action中作为参数传递。
请注意,这里使用的`date -u`命令是基于Unix/Linux系统,根据你的实际环境,命令和参数可能需要进行相应调整。
阅读全文