oozie工作流el函数timestamp()不提供秒

vsikbqxv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(367)

我有以下oozie工作流:

  1. <workflow-app name="${workflow_name}" xmlns="uri:oozie:workflow:0.4">
  2. <global>
  3. <job-tracker>${jobTracker}</job-tracker>
  4. <name-node>${nameNode}</name-node>
  5. <configuration>
  6. <property>
  7. <name>mapred.job.queue.name</name>
  8. <value>${launcherQueueName}</value>
  9. </property>
  10. <property>
  11. <name>mapred.queue.name</name>
  12. <value>${launcherQueueName}</value>
  13. </property>
  14. </configuration>
  15. </global>
  16. <start to="email-1" />
  17. <action name="email-1">
  18. <email xmlns="uri:oozie:email-action:0.1">
  19. <to>${toEmailList}</to>
  20. <cc>${ccEmailList}</cc>
  21. <subject>ts</subject>
  22. <body>
  23. TIMESTAMP: ${timestamp()}
  24. </body>
  25. </email>
  26. <ok to="mail-2" />
  27. <error to="kill-fail" />
  28. </action>
  29. ... 4 more actions for mail-2, mail-3 and mail-4
  30. <kill name="kill-fail">
  31. <message>${workflow_name} failed, error
  32. message[${wf:errorMessage(wf:lastErrorNode())}]
  33. </message>
  34. </kill>
  35. <end name="end" />
  36. </workflow-app>

我收到的电子邮件的时间戳值如下

  1. TIMESTAMP: 2016-01-27T16:19Z

根据el定义,应采用以下格式:(yyyy-mm)-ddthh:mm:ss.sz
为什么我没有时间?
我实际要做的是:我试图弄清楚这四个函数调用是否总是返回相同的值或不同的值。我需要一些不变的东西,所以如果timestamp()对我不起作用,那么我想考虑协调器的nominaltime/actualtimeel函数。
如果我们无法获得时间戳中的秒数,是否有方法暂停每个操作,以便允许它们在超过一分钟的时间范围内执行?
编辑:samson scharfrichter总结了以下答案:
1) 为什么timestamp()中没有秒?
以前的版本有秒,但版本4.2没有。
2) 有没有一个函数也能给我几秒钟的时间?
afaik不
3) 如何在工作流的所有操作中使用相同的时间值?
通过coord:nominaltime()作为来自协调器的属性,并在操作中多次使用它。
4) 如何在工作流中暂停操作?
这不是简单的办法。使用一个java操作—一个jar和一个执行thread.sleep()的简单类

2eafrhcq

2eafrhcq1#

引用oozie v4.2文档
4.2.2基本el功能
字符串时间戳()
它以iso8601格式返回当前日期时间,精确到分钟(yyyy-mm)-ddthh:mmz),在oozie的处理时区,即1997-07-16t19:20z
这似乎和你得到的很一致。
您可以格式化 coord:nominalTime() 如果你愿意的话,可以降到第二个,但是在协调器中——因此你必须把结果塞进一个 <configuration> 属性将其转发到工作流脚本。
还有阿法克 coord:actualTime() 指的是过去协调器开始考虑其下一个工作流示例的不确定时间。我无法想象它能用来做什么。
顺便说一句,我不明白“你到底想做什么”;如果您只想为您的操作生成唯一的id,那么有很多方法可以做到这一点,而不必依赖oozie速度慢并且不会在同一秒内执行多个操作的事实。

相关问题