oozie 使用coord的方式

定时启动作业的方式可以使用oozie的coord来完成,项目工程结构如下,其中swda-wf下的coordinator.xml是定时作业的实现。

Paste_Image.png

1,coordinator.xml文件
其中只能包括workflow action,需要在同级目录中存在workflow.xml文件,可是实现动态参数的传递(由oozie平台提供动态参数)。
定时执行需要根据四个参数来决定<start,end,frequency,timezone>
start:设置job的开始执行时间,一般设置为当前时间,如果是以前的时间,会起一些脏批次。
end:job的结束时间
frequency:job执行的周期,coord有一些好用的el表达式
timezone:时区,oozie默认是utc,需要调整到东8区

<?xml version="1.0" encoding="UTF-8"?>
<coordinator-app name="w_coord" frequency="${coord:minutes(60)}" start="${start}" end="${end}" timezone="Asia/Shanghai" xmlns="uri:oozie:coordinator:0.2">
    <action>
        <workflow>
            <app-path>${workflowAppUri}</app-path>
            <configuration>
                <property>
                    <name>jobTracker</name>
                    <value>${jobTracker}</value>
                </property>
                <!-- <property>
                    <name>etlDate</name>
                   <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), 'yyyy-MM-dd')}</value>
                </property> -->
                <property>
                    <name>etlDate</name>
                    <value>${coord:formatTime(coord:nominalTime(), 'yyyy-MM-dd')}</value>
                </property>
            </configuration>
        </workflow>
    </action>
</coordinator-app>

正确起批后,可以在oozie的元数据中查看到,表名为coord_actions.

Paste_Image.png

2,启动命令
和workflow启动命令相同,只是在job.properties中的参数不同,注意加粗的关键字,workflow action的为wf。

oozie.coord.application.path=${nameNode}/user/${user.name}/${sdaRoot}/swda-oozie/swda-wf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容