文章目录
前言
本文是对一个开源的ETL工具——Kettle(水壶)的介绍。它允许你管理来自不同数据库的数据。
-
ETL:描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL一词较常用在数据仓库。
-
Trans(转换)和Job(作业)的区别
1) 作业是步骤流,转换是数据流。
2)作业的步骤:必须等前面的步骤都跑完了,后面的步骤才会执行;
转换是一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流从第一个控件开始,一条记录一条记录地流向最后的控件。 -
Kettle的特点:免费、易配置、图形化界面、支持来自不同数据库的数据、两种脚本文件(trans和job)、定时功能(job里的start组件)。
一、Kettle的组成
1.勺子(Spoon.bat/Spoon.sh)
一个图形化界面,Windows选择Spoon.bat,Linux选择Spoon.sh。
2.煎锅(Pan.bat/Pan.sh)
利用Pan可以使用命令行方式调用Trans
3.厨房(Kitchen.bat/Kitchen.sh)
利用Kitchen可以使用命令行方式调用Job
4.菜单(Carte.bat/Carte.sh)
一个轻量级的Web容器,用于建立专用、远程的ETL Server
特点
二、Kettle的下载安装
下载地址:https://sourceforge.net/projects/pentaho/files/
Kettle中文网:http://www.kettle.net.cn/
进入下载页面,点击Download Latest Version即可

注:安装路径不要有中文,以免出错。
下好之后,解压,以Windows系统为例,打开data-integration中的Spoon.bat即进入主界面,如下:
注:需要安装Java环境,并配置环境变量。jdk1.8及以上都可,低版本的话Kettle不支持,会报错 。

三、Kettle的使用
Kettle需要连接数据库才能操作其中的数据,于是就得下载对应的数据库驱动。
比如你要连MySQL 数据库,就得先下载好 mysql-connector-java-**.jar这个驱动包,然后把 它 放在data-integration下面的 lib 文件夹中。如下图所示:

MySQL驱动包下载地址:https://dev.mysql.com/downloads/connector/j/(Select Operating System勾选Platform Independent,然后下载zip文件即可)
实例1. 将MySQL中表user1的数据同步到user2(id相同的数据就更新
两表信息如下所示:

操作过程:
- 首先进行数据库连接(以MySQL为例):
(文件->新建->数据库连接 或者 转换->DB连接)


连接创建并测试通过后可以在左侧DB连接下右键共享出来。因为在单个作业或者转换中新建的DB连接都是都是局域数据源,在其他转换和作业中是不能使用的,即使属于同一个作业下的不同转换,所以需要把他们共享,这样DB连接就会成为全局数据源,不用多次编辑。
这里有博客写得蛮详细,关于Kettle连接数据库:Kettle连接数据库(DB连接) — aganliang
- 新建一个转换(文件->新建->转换):

- 表输入(核心对象->输入->表输入):


- 核心对象->输出->插入/更新:

- 运行:


- 查看效果:

实例2:新建一个作业
这个作业实现的是:将实例1的转换执行完之后再执行一个SQL脚本(向表user2中插入一条数据):

效果:

总结
在整个过程中,遇到了一些问题,找到了一些相关优质回答,特记录于此:
1. Mysql连接驱动与Java之间的版本不匹配问题(Mysql-connector-java与Java、Mysql版本对应关系)3
本文详细介绍了开源ETL工具Kettle的组成部分,包括Spoon、Pan、Kitchen和Carte,以及如何下载安装和配置。通过两个实例展示了Kettle如何将MySQL数据同步并创建转换和作业。在使用过程中强调了需要Java环境支持和数据库驱动的添加。

3316

被折叠的 条评论
为什么被折叠?



