欢迎光临散文网 会员登陆 & 注册

Kettle学习笔记(二):作业和定时

2022-12-03 15:21 作者:月光神杨新羽  | 我要投稿

一、任务

下面来说一下Kettle里的另一类设计模式,作业(Job)。作业里的主对象树和核心对象基本如下。

核心对象看起来很多,但是比较基础的主要就是通用中的Start、转换、成功等,还可以通过邮件进行邮件发送,将作业中的日志发送至邮箱方便进行监控。这里可以看出的是,作业是可以相互嵌套的。

我的典型用法就是start+转换+成功。这里的转换,就是数据流的核心,转换可以添加多个,用以进行多个表的数据同步。

在作业中,对转换组件右键,会显示编辑作业入口,这里编辑作业入口可以关联之前已经制作好的转换,这里的Open Referenced Object,可以直接跳转到已经关联好的转换里。

编辑作业入口


二、定时

上面说完了作业的基本设置,作业相对转换是较为简单的,因为核心业务都在转换里。下面来说说关于定时,因为业务数据需要定时进行同步。

作业的Start本身提供了定时功能,但是却不够实用。原因在于要保持Kettle始终处于启动状态,这样Kettle一直保持启动一方面浪费会服务器资源,另一方面Kettle一旦程序崩溃,那么定时更新就会被破坏,不论从哪方面讲,都不够稳定。

Kettle自带的定时作业

那么我们怎么办呢?解决方案是使用shell脚本,利用Linux定时任务来解决这个问题。


这里要说以一下,Kettle提供了四大核心组件:

1)Spoon是Kettle图形化界面开发的启动脚本,在Linux运行spoon.sh启动,在windows上则运行Spoon.bat进行启动。下面三个命令皆是如此(.sh和.bat的区别)。《Kettle服务器部署相关问题》说过了,如果在Linux上运行,一定要安装图形界面。

2)Pan是Kettle下用来执行转换的脚本。

3)Kitchen是Kettle下用来执行作业的脚本。

4)Carte是一个轻量级容器,用于建立ETL Server。


Kettle这里为我们提供了不需要启动图形界面直接执行转换和作业的Pan和Kitchen。我们转换保存的文件为xxx.ktr,作业的保存文件为xxx.kjb。这里有一个点,其实可以不生成ktr和kjb文件,将数据直接保存进数据库,这里暂时不做赘述了。

我们需要创建一个xxx.sh的脚本文件,里面写什么呢?

这段脚本的意思是,启动在/root/Kettle/路径下的kitchen.sh脚本文件,这个kitchen实际执行的文件为在/root/Kettle/project/路径下名为1.kjb的作业文件,然后把日志信息输出到/root/Kettle/project/路径下的1.log中(日志信息的输出是十分必要的,便于监控)。到此,我们完成了执行脚本xxx.sh的制作。


接下来就是设置Linux的定时任务。

crontab -e可以进行任务设置,进入编辑模式,编辑完成后保存退出,跟vim的操作一致。这里要详细说的是定时任务这一行,* * * * *分为对应分 时 日 月 周,统一按这5个维度进行定时,一行一个定时任务,后面/root/Kettle/xxx.sh是要执行的脚本文件的位置。我这里的0 */1 * * *的意思就是每小时执行一次,执行时间为每小时0分钟。如果第一位默认*就是保存这个任务的时间,每小时执行一次。这块感兴趣的朋友可以详细研究。


到这里,Kettle的作业和定时相关的内容就说完了。越使用越发现Kettle功能的强大。

Kettle学习笔记(二):作业和定时的评论 (共 条)

分享到微博请遵守国家法律