2

我正在尝试在 oozie-coordinator xml 的标记中使用 oozie 提供的内置或 EL 函数,但似乎不支持它?有谁知道任何其他方式来声明这一点?

我们的完成标志中有日期。

<done-flag>${YEAR}${MONTH}${DAY}.done</done-flag>
OR
<done-flag>${coord:formatTime(coord:actualTime(), 'yyyyMMdd')}</done-flag>

启动 oozie 协调器工作流时出现以下错误。

Error: E1004 : E1004: Expression language evaluation error, 
Unable to evaluate :${coord:formatTime(coord:actualTime(), 'yyyyMMdd')}:

有谁知道实现动态完成标志名称的方法?

4

2 回答 2

1

不是 100% 确定你想做什么。

我的理解是协调器在运行工作流之前等待名为“完成标志”的文件。然后可以使用“coord:actualTime()”函数来了解工作流实际开始的时间。

=>文档应该强调,在大多数情况下,“协调员行动”这个词实际上意味着“工作流程”......

如果您想在协调器仍在等待时检查时钟时间,关键字YEAR - MONTH - DAY - HOUR - MINUTE是您唯一的希望。

于 2015-07-28T20:53:03.100 回答
0

我通过使用 uri-template 中的 YEAR、MONTH、DAY 变量并清空 .

  <uri-template>
    /donemarkers/dependency-job/${YEAR}${MONTH}${DAY}.done
  </uri-template>
  <!--<done-flag>${YEAR}${MONTH}${DAY}.done</done-flag>-->
  <done-flag></done-flag>

我从日志中了解到,oozie 首先检查是否存在具有 uri-template 指定名称的目录,如果没有,则检查是否存在 uri-template 指定的文件。

2015-07-28 19:40:46,225  INFO CoordActionInputCheckXCommand:539 - USER[-] GROUP[-] TOKEN[-] APP[-] JOB[0131647-140520191754742-oozie-oozi-C] ACTION[0131647-140520191754742-oozie-oozi-C@2] [0131647-140520191754742-oozie-oozi-C@2]::ActionInputCheck:: In checkResolvedUris...
2015-07-28 19:40:46,225  INFO CoordActionInputCheckXCommand:539 - USER[-] GROUP[-] TOKEN[-] APP[-] JOB[0131647-140520191754742-oozie-oozi-C] ACTION[0131647-140520191754742-oozie-oozi-C@2] [0131647-140520191754742-oozie-oozi-C@2]::ActionInputCheck:: In checkListOfPaths: /donemarkers/dependency-job/20150725.done is Missing.
2015-07-28 19:40:46,241  INFO CoordActionInputCheckXCommand:539 - USER[-] GROUP[-] TOKEN[-] APP[-] JOB[0131647-140520191754742-oozie-oozi-C] ACTION[0131647-140520191754742-oozie-oozi-C@2] [0131647-140520191754742-oozie-oozi-C@2]::ActionInputCheck:: File:/donemarkers/dependency-job/20150725.done, Exists? :true
于 2015-07-28T23:50:14.947 回答