标签:决定 自定义 control comm 偏移量 文件 mat timezone 格式化
coordinator是workflow的定时提交器,基于时间条件与数据生成触发(based on time and data triggers)。简单点说,coordinator按所定义的时间周期进行轮询,若数据生成条件满足,则触发workflow任务;否则,则等待数据生成或跳过(调度策略由设置的超时时间决定)。
<coordinator-app name="coord-demo" frequency="${coord:days(1)}" start="${start_time}" end="${end_time}"
timezone="Asia/Shanghai" xmlns="uri:oozie:coordinator:0.1">
文件头定义了coordinator任务的名称,执行频率(frequency),开始与起止时间(start、end)。${coord:days(1)}
为coordinator内置的EL function (Expression Language),表示为执行周期为一天。frequency的时间单位为分钟,则${coord:days(1)}=1440
,${coord:hours(3)}=180
. 一般地,在job.properties定义如:start_time=2016-06-07T00:00Z,应以UTC时区为准。
<controls>
<!--超时时间,若为0,一旦数据生成超时则coordinator action被丢弃;
若为-1,则一直等待数据生成;
若 > 0,即为超时时间(单位:分钟)-->
<timeout>-1</timeout>
<!--并发action数-->
<concurrency>1</concurrency>
<!--同时被触发的多个coordinator job的执行次序-->
<execution>${execution_order}</execution>
</controls>
<datasets>
<!--数据生成目录-->
<dataset name="data" frequency="${coord:hours(1)}" initial-instance="${start_time}" timezone="${timezone}">
<uri-template>${nameNode}/path/to/${YEAR}-${MONTH}-${DAY}/${HOUR}/</uri-template>
<done-flag></done-flag>
</dataset>
</datasets>
相关参数:
${YEAR}
、${MONTH}
等为EL Time Constants,具体数值由<input-events> <data-in ..>
传入,也可通过job.properties传入自定义的参数。<input-events>
<data-in name="dataReady" dataset="data">
<instance>${coord:current(-1)}</instance>
</data-in>
</input-events>
定义了数据触发条件,${coord:current(-1)}
表示对于当前时间的偏移,其中偏移量=数值* dataset frequency。有些时候,我们要判断多个目录是否生成,比如,判断一天的24个小时目录,这时应这样写:
<data-in name="dataReady2" dataset="data">
<start-instance>${coord:current(-24)}</start-instance>
<end-instance>${coord:current(-1)}</end-instance>
</data-in>
<action>
<workflow>
<app-path>${wf_app_path}</app-path>
<configuration>
<property>
<name>dayTime</name>
<value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, ‘DAY‘), ‘yyyy-MM-dd‘)}</value>
</property>
</configuration>
</workflow>
</action>
定义coordinator要触发的workflow,
coordinator提供了一些用于时间计算的函数,比如:
返回多个时间:
<value>${coord:formatTime(coord:dateOffset(coord:dateOffset(coord:nominalTime(), -12, ‘HOUR‘), -6, ‘DAY‘), ‘yyyy-MM-dd‘)},${coord:formatTime(coord:dateOffset(coord:dateOffset(coord:nominalTime(), -12, ‘HOUR‘), -5, ‘DAY‘)</value>
参考
:http://www.cnblogs.com/en-heng/p/5581331.html
Oozie Coordinator使用及详解
http://shiyanjun.cn/archives/684.html
http://blog.csdn.net/oracle8090/article/details/54666543
标签:决定 自定义 control comm 偏移量 文件 mat timezone 格式化
原文地址:http://www.cnblogs.com/ilinuxer/p/6810420.html