Kettle
Kettle是一款开源的,元数据驱动的ETL工具集。**ETL是用来描述将数据从来源端经过抽取(extract)、交互转换(transfrom)、加载(load)至目的端的过程。**ETL常用在数据仓库。
官网:http://kettle.pnetaho.org/
数据总体技术架构:
打开方式:
spoon.bat以管理员模式打开。
注:以什么数据库打开就在根目录中的lib中引入相应的jar包。
优缺点
优点
- 可集成到Java;
- 支持多种数据源。csv,exal,xml,库对库数据转换;
- 简单的权限管理;
- 支持复杂的数据转换;
- 多种可配置的空间。
缺点
- 稳定性差,不能回滚;
- 性能比较差,特别吃内存,吃带宽;
- 缺乏对元数据的管理。
执行顺序
作业
- 串行执行:同一条线先执行前面再执行后面,完成执行一条线后再执行另一条;
- 并行执行:俩条线上步骤同时执行。
每个步骤执行结果分为true(成功)或是false(失败),根据结果控制流程走向。
转换
所有步骤同时进行,记录会从最前端的步骤向后传递,传递到相应步骤该记录被该步骤相应处理,处理完成后记录会往后传递。
记录传递模式:
- 复制
- 分发
作用
简单抽取
在不同数据库之间实现数据分享,要求俩个数据库拥有相同的表结构。
实用控件
阻塞数据直到步骤完成
kettle日志
可以在控制台输出日志,日志输出分为7个等级。将日志储存在数据库表中。
开发注意事项
kettle和tomcat相识,可以配置缓冲
案例
表对表数据转换
-
表对表,exal对表。
-
提交记录是每多少条记录提交一次。按照自己电脑配置,当操作的数据大于200最好自己设置,如果配置大的话,一次提交不完。
数据实时增量
- 以原数据源的数据为主体与目标表合并记录;
- 原数据有改动则更新,有删除则删除
作业调用转换
Java代码调用
- 引入相关jar包
- 准备相关ktr文件
- 编写相应的程序代码
去掉重复记录
- 必须在去重之前排序
过滤记录
阻塞消息直到步骤完成
开发注意事项
-
尽量使用数据库连接池;
-
尽量提高批处理的commit,size;
-
尽量使用缓冲,需要大的缓冲;主要是文本文件和数据流;
-
Kettle是Java做的,尽量使用大一点的内存参数气启动Kettle;
-
Group,merge, stream lookup,split field这些操作比较慢,想办法避免;能用sql尽量使用sql;
-
插入大量数据的时候尽量把索引删掉;
-
尽量避免update,delete操作,尤其是update,如果可以把update先删除再insert;