1.kettle概述
1.1 什么是kettle。
kettle是一款功能强大的ETL工具。提供可视化图形界面,可通过配置的方式完成各类数据操作;同时提供定时任务功能。kettle为纯java编写,支持跨平台使用。
备注:ETL即为数据抽取,转换,装载。也就是我们常说的数据清洗。
1.2 kettle的核心元素
kettle有两大核心元素:转换(transformation),作业(job)
转换用来完成数据的基础转换。作业配置定时任务,用来完成对整个工作流的控制。简单来说,转换是数据流,作业是步骤流。
1.3 kettle工程的存储方式
1)以xml形式存储,转换为ktr类型,作业为kjb类型。 2)以资源库方式存储(数据库资源库和文件资源库)
1.4 kettle组成
1)spoon,提供一个图形化界面 2)pan,以命令行的形式调用转换 3)kitchen,以命令行的形式调用job 4)carte,轻量级的web容器,用于建立专用,远程的ETL服务。
2 kettle安装及使用
2.1 kettle下载
下载地址:sourceforge.net/projects/pe…
kettle无需安装,下载解压即可使用。
2.2 kettle使用
2.2.1 控件简介
kettle控件分为steps(步骤)和hops(节点连接)两大类通过配置步骤,使用节点连接连接各步骤完成一整个数据流的操作。
2.2.2 新建转换
2.2.3 输入输出
输入为数据流入口,输出为数据流出口。输入和输出可以完成一个简单的数据抽取工作。
2.2.4 数据库连接
数据库连接可以连接各类数据库,支持包括oracle,mysql,sqlserver等各类数据库。同时也支持jndi,jdbc多种连接方式。
2.2.5 完成转换配置
配置完数据库连接后,即可对数据库进行抽取和写入。
2.2.6 新建作业
作业核心组件为start,成功,转换,作业等。start为作业起点可配置定时任务的规则,成功则表示作业执行结束。转换、作业可配置执行的转换与作业。
2.2.7 定时任务配置
2.2.8 执行结果查看
2.2.9 错误排查
kettle提供详细日志及调试模式,一般可根据日志及调试结果定位到问题。常见问题多为数据库连接异常,sql语句错误,字段长度及类型错误等。根据日志信息进行调整即可。
另外需注意的是,乱码等问题kettle不会有错误提示,所以每次执行完需进行结果确认。
2.3 常用组件
2.3.1 脚本执行组件
kettle提供java脚本,JavaScript脚本,sql脚本等多种脚本执行,可在数据转换或事务处理中进行灵活使用。
2.3.2 转换组件
转换组件主要用于数据转换,可进行列转行,去重,行专列等操作,同时提供了大量的字符串操作组件。
2.3.3 查询组件
查询组件主要用于接口查询,数据库查询等查询操作。
2.3.4 流程组件
流程组件可用于数据流操作。
2.4 资源库
资源库分为数据库资源库与文件资源库。资源库与普通文件存储的区别在于,资源库对脚本进行了统一管理,同时数据库资源库便于远程开发,多人协作开发等。
2.4.1 新建资源库
点击connect,选择repository manager,进入资源库管理界面,点击add,选择资源库类型。进行资源库配置。 配置界面如下图所示:
数据库资源库在配置时,还需先配置资源库所在数据库。配置完成后kettle会自动完成表的创建。
2.4.2 连接资源库
创建完资源库后可连接该资源库,用户名密码默认为admin/admin
2.4.3 探索资源库
2.5 其他补充
全量同步和增量同步
首先我们需要明确我们的同步目的,如果用于基础数据备份,数据量小,且不要求实时性。那我们可以选择定时全量同步。如果用于业务数据同步,数据量大且实时性要求高,那我们可以选择增量同步。
全量同步与增量同步的区别:
1)同步方式
全量同步是在同步时,采用全表覆盖更新的方式进行同步。
增量同步是在同步时,根据checkpoint(时间戳或字段标识)来判断同步哪些数据。
2)数据
全量同步时只需要拉取数据即可,无需对数据进行筛选。
增量同步需根据checkpoint进行筛选,那么这就需要记录或知道哪些数据执行过更新操作。
2.6 学习参考
在服务器10.11.3.126上的数据库资源库,有一些已完成的kettle脚本,大家可以作为学习参考。