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

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

我有以下oozie工作流:

<workflow-app name="${workflow_name}" xmlns="uri:oozie:workflow:0.4">

    <global>
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${launcherQueueName}</value>
            </property>
            <property>
                <name>mapred.queue.name</name>
                <value>${launcherQueueName}</value>
            </property>
        </configuration>
    </global>

    <start to="email-1" />

    <action name="email-1">
        <email xmlns="uri:oozie:email-action:0.1">
            <to>${toEmailList}</to>
            <cc>${ccEmailList}</cc>
            <subject>ts</subject>
            <body> 
                TIMESTAMP:  ${timestamp()}
            </body>
        </email>

        <ok to="mail-2" />
        <error to="kill-fail" />
    </action>

... 4 more actions for mail-2, mail-3 and mail-4

    <kill name="kill-fail">
        <message>${workflow_name} failed, error
            message[${wf:errorMessage(wf:lastErrorNode())}]
        </message>
    </kill>

    <end name="end" />
</workflow-app>

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

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速度慢并且不会在同一秒内执行多个操作的事实。

相关问题