gpt4 book ai didi

hadoop - oozie数据集时区偏移不起作用

转载 作者:行者123 更新时间:2023-12-02 22:04:09 26 4
gpt4 key购买 nike

我已经创建了一个Oozie协调器,该协调器在启动之前取决于数据集。在澳大利亚的时候,我将时区偏移量设置为墨尔本,并将数据频率设置为10分钟。

我很累让tzoffSet()EL函数返回澳大利亚时区偏移量,但是输入数据集仍然是UTC时间。

以下是协调员的定义

 <coordinator-app name="My_Coordinator55"
frequency="0,10,20,30,40,50 * * * *"
start="${start_date}" end="${end_date}" timezone="Australia/Sydney"
xmlns="uri:oozie:coordinator:0.2"
>
<controls>
<execution>FIFO</execution>
</controls>
<datasets>
<dataset name="inputpath" frequency="${coord:minutes(10)}"
initial-instance="2016-04-08T04:00Z" timezone="Australia/Melbourne">
<uri-template>${nameNode}/user/hive/warehouse/InputDir${YEAR}${MONTH}${DAY}${HOUR}${MINUTE}</uri-template>
<done-flag></done-flag>
</dataset>
</datasets>
<input-events>
<data-in name="inputpath" dataset="inputpath">
<instance>${coord:current(coord:tzOffset()/10)}</instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>${wf_application_path}</app-path>
<configuration>
<property>
<name>inputpath</name>
<value>${coord:dataIn('inputpath')}</value>
</property>
<property>
<name>tablename</name>
<value>Output${coord:formatTime( coord:dateTzOffset(coord:nominalTime(), &quot;Australia/Melbourne&quot;), &#39;yyyyMMddHHmm&#39;)}</value>
</property>
<property>
<name>oozie.use.system.libpath</name>
<value>True</value>
</property>
<property>
<name>start_date</name>
<value>2016-04-08T04:00Z</value>
</property>
<property>
<name>end_date</name>
<value>2016-10-15T23:14Z</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>

下面是我运行协调器时的结果。虽然我有2016年4月8日14:00(墨尔本时间)的标称时间(墨尔本时间)正在查看2016年4月8日04:00(UTC时间为-10小时)
<instance>${coord:current(coord:tzOffset()/10)}</instance>

Scheduled workflows and required inputs

最佳答案

我终于找到了答案,所以只发布了帮助下一个Oozie时区夏时制受害者的方法。

当您定义tzOffset()[注意字母的大写字母时,Oozie中的另一个函数具有大写的T不适用于数据集]函数会计算数据集和工作流时区之间的时区差。所以这里的EL函数返回的是墨尔本(AEST TZ)与墨尔本偏离路线的0差!

  <instance>${coord:current(coord:tzOffset()/10)}</instance>

因此,技巧是将数据集的时区设置为UTC,将协调器(工作流)的时区设置为实际时间(如果您要使用该时区来自动实现夏令时差)。

注意:我正在使用此方法来帮助自动实现夏令时更改。该函数在Winter返回-600,在Summer返回-660。并使用除以10,因为数据集的频率设置为10分钟。

关于hadoop - oozie数据集时区偏移不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com