Hadoop 宣传Oozie协调员';s在工作流中运行日期

Hadoop 宣传Oozie协调员';s在工作流中运行日期,hadoop,oozie,oozie-coordinator,Hadoop,Oozie,Oozie Coordinator,问题摘要 运行Oozie coordinator时,我需要工作流能够访问当前日期(即协调员运行的日期),格式为yyyyMMdd 信息 我有一个大型Oozie工作流,由协调员初始化 coord.properties 您可能会发现使用内置EL函数coord:formatTime(字符串时间戳,字符串格式)转换时间戳格式更容易: 例如: ${coord:formatTime(coord:actualTime(), "yyyyMMdd")} 值得一提的是,我知道coordinator中有标记,但是合

问题摘要

运行Oozie coordinator时,我需要工作流能够访问当前日期(即协调员运行的日期),格式为
yyyyMMdd

信息

我有一个大型Oozie工作流,由协调员初始化

coord.properties


您可能会发现使用内置EL函数
coord:formatTime(字符串时间戳,字符串格式)
转换时间戳格式更容易:

例如:

${coord:formatTime(coord:actualTime(), "yyyyMMdd")}

值得一提的是,我知道coordinator中有
标记,但是合并它们需要重新编写我的工作流程,并且会在coordinator和临时运行之间产生很大的不必要的差异。继续使用我的
runDate
属性会简单得多。谢谢,就是这样。出于好奇,你知道为什么Oozie不允许你在全球范围内使用
coord
函数吗?不得不自己制作EL函数似乎很愚蠢!除了将工作流和协调器的定义分开之外,我不知道还有什么强有力的理由。
<?xml version="1.0" encoding="UTF-8"?>
<coordinator-app xmlns="uri:oozie:coordinator:0.1" name="wf_scheduler" frequency="${coord:days(1)}" start="2015-01-30T08:50Z" end="2017-01-30T05:00Z" timezone="UTC">
   <action>
      <workflow>
         <app-path>${nameNode}/project/workflow</app-path>
         <configuration>
            <property>
               <name>currentDate</name>
               <value>${coord:actualTime()}</value>
            </property>
            <property>
            <name>runDate</name>
            <value>${convertDate(currentDate,"YYYY-MM-DDTHH:mmZ","yyyyMMdd")}</value>
            </property>
         </configuration>
      </workflow>
   </action>
</coordinator-app>
Error: E1004 : E1004: Expression language evaluation error, Unable to evaluate :${convertDate(currentDate,"YYYY-MM-DDTHH:mmZ","yyyyMMdd")}:
${coord:formatTime(coord:actualTime(), "yyyyMMdd")}