Kettle

Kettle

Kettle是一款开源的,元数据驱动的ETL工具集。**ETL是用来描述将数据从来源端经过抽取(extract)、交互转换(transfrom)、加载(load)至目的端的过程。**ETL常用在数据仓库。

官网:http://kettle.pnetaho.org/

数据总体技术架构:

Kettle_第1张图片

打开方式:

spoon.bat以管理员模式打开。

注:以什么数据库打开就在根目录中的lib中引入相应的jar包。

优缺点

优点

  • 可集成到Java;
  • 支持多种数据源。csv,exal,xml,库对库数据转换;
  • 简单的权限管理;
  • 支持复杂的数据转换;
  • 多种可配置的空间。

缺点

  • 稳定性差,不能回滚;
  • 性能比较差,特别吃内存,吃带宽;
  • 缺乏对元数据的管理。

执行顺序

作业

  • 串行执行:同一条线先执行前面再执行后面,完成执行一条线后再执行另一条;
  • 并行执行:俩条线上步骤同时执行。

每个步骤执行结果分为true(成功)或是false(失败),根据结果控制流程走向

转换

所有步骤同时进行,记录会从最前端的步骤向后传递,传递到相应步骤该记录被该步骤相应处理,处理完成后记录会往后传递。

记录传递模式:

  1. 复制
  2. 分发

作用

简单抽取

在不同数据库之间实现数据分享,要求俩个数据库拥有相同的表结构。

Kettle_第2张图片

实用控件

阻塞数据直到步骤完成

kettle日志

可以在控制台输出日志,日志输出分为7个等级。将日志储存在数据库表中。

开发注意事项

kettle和tomcat相识,可以配置缓冲

案例

表对表数据转换

  • 表对表,exal对表。

  • 提交记录是每多少条记录提交一次。按照自己电脑配置,当操作的数据大于200最好自己设置,如果配置大的话,一次提交不完。

数据实时增量

  • 以原数据源的数据为主体与目标表合并记录;
  • 原数据有改动则更新,有删除则删除

作业调用转换

Java代码调用

  • 引入相关jar包
  • 准备相关ktr文件
  • 编写相应的程序代码

去掉重复记录

  • 必须在去重之前排序

过滤记录

阻塞消息直到步骤完成

开发注意事项

  1. 尽量使用数据库连接池;

  2. 尽量提高批处理的commit,size;

  3. 尽量使用缓冲,需要大的缓冲;主要是文本文件和数据流;

  4. Kettle是Java做的,尽量使用大一点的内存参数气启动Kettle;

  5. Group,merge, stream lookup,split field这些操作比较慢,想办法避免;能用sql尽量使用sql;

  6. 插入大量数据的时候尽量把索引删掉;

  7. 尽量避免update,delete操作,尤其是update,如果可以把update先删除再insert;

你可能感兴趣的:(Kettle)