首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oozie Workflow EL函数时间戳()不给秒

Oozie Workflow EL函数时间戳()不给秒
EN

Stack Overflow用户
提问于 2016-01-27 20:08:05
回答 1查看 6.2K关注 0票数 1

我有以下Oozie工作流:

代码语言:javascript
运行
复制
<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>

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

代码语言:javascript
运行
复制
TIMESTAMP:  2016-01-27T16:19Z

根据EL定义,它应该是这样的格式:(YYYY:mm:ss.sz)

为什么我没有时间?

我实际上想要做的是:我试图弄清楚这四个函数调用是否总是返回相同的值或不同的值。我需要一些不会改变的东西,所以如果时间戳()对我不起作用,那么我想考虑协调器的NominalTime / ActualTime EL函数。

如果我们不能在时间戳中得到秒,是否有办法暂停每个动作,以便它们在超过一分钟的时间范围内执行?

编辑:下面是Scharfrichter的答案摘要:

1)为什么时间戳()中没有秒?

以前的版本有秒,但4.2版没有。

( 2)有没有一个函数也能给我几秒钟?

AFAIK编号

3)如何在工作流的所有操作中使用相同的时间值?

将coord:nominalTime()作为一个属性传递给协调器,并在操作中多次使用它。

4)如何在工作流中暂停操作?

这不是一条简单的路。使用一个java操作-一个带有一个简单类的jar,它执行Thread.sleep()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-27 22:41:32

引用V4.2的Oozie文档

4.2.2基本EL函数 字符串时间戳() 它以ISO8601格式返回当前的日期时间()到Oozie处理时区中的分钟(yyyy:mmZ),即1997-07-16T19:20Z。

这似乎和你得到的相当一致。

如果您愿意,可以将coord:nominalTime()格式化为第二种格式,但在协调员中--因此必须将结果填充到<configuration>属性中,以便将其转发到工作流脚本。

AFAIK coord:actualTime()指的是一个不确定的时间,在过去,当协调员开始考虑它的下一个工作流实例时。我无法想象它能用来做什么。

顺便说一句,我不明白“您实际上想要做什么”;如果您只想为您的操作生成唯一的in,那么您有许多方法可以做到这一点,而无需依赖Oozie速度慢并且不会在同一秒钟内执行多个操作的事实。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35047044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档