数据迁移ETL之kettle一

时间:2021-07-07 10:21:06

好长时间没有记录技术文章了,正好最近负责数据迁移工作,就记录一下。

公司近期做了大规模的支付系统架构改造,需要进行数据迁移,将现有生产数据迁移到新的系统库中,在2013年底的时候曾经做过一次交易优化改造,把交易数据也做了一次数据迁移,当时使用的是springbatch来完成的。虽然成功完成迁移工作,但是在迁移过程中遇到了很多问题。

1.整理起来非常麻烦,各种job不太容易管理 。

2.不能进行很好的统计,如在迁移中不能随时跟踪迁移状态,如已迁移的行数,当前每秒迁移行数。

3.不太容易进行优化, 当时多线程并发迁移未使用。

4.完全依赖于java,不够灵活,移植性差。

对于这次系统架构改造要比上一次复杂的多,所以对迁移方案进行了从新的调研,最终选择了开源的kettle来进行。

找了一些资料,简单的描述一下吧:Kettle是一款国外开源的ETL工具,纯java编写,可以在WindowLinuxUnix上运行,绿色无需安装,数据抽取高效稳定。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件transformationjobtransformation完成针对数据的基础转换,job则完成整个工作流的控制。作为Pentaho的一个重要组成部分,现在在国内项目应用上逐渐增多。

ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程.这里就不做描述了。

我们来说说kettle吧,

       环境:window7 64位、oraclekettlepdi-ce-5.1.0.0-752)、jdk

Kettle工具可以到官网去下载:http://community.pentaho.com/projects/data-integration/

下载后进行解压缩(绿色无需安装),解压缩后的目录中找到Spoon.bat文件(window下适用),这是启动程序的文件。右击编辑Spoon.bat文件来看看启动参数,找到下面这一行默认情况下:

if"%PENTAHO_DI_JAVA_OPTIONS%"=="" setPENTAHO_DI_JAVA_OPTIONS="-Xmx1024m" "-XX:MaxPermSize=512m"  ,  JVM的内存设置,可修改这两个数值来达到最佳的内存分配的最佳效果,根据个人的机器配置来定吧。

  运行spoon.bat后会出现一个图形页面,是不是有种眼前一亮的感觉。我们来见识一下吧。

数据迁移ETL之kettle一

 数据迁移ETL之kettle一

Spoon--转换过程设计器

    GUI工作,用来设计数据转换过程,创建的转换可以由Pan来执行,也可以被Chef所包含,作为作业中的一个作业项。

一、Kettle UI介绍:

1.        作业:在一个作业下包含多个转换,作业创建后所产生的文件扩展名为. Kjb

下图为作业的案例:

数据迁移ETL之kettle一

2.        转换:一个转换可以属于多个作业,转换创建后所产生的文件扩展名为. Ktr

下图为转换的案例:

数据迁移ETL之kettle一