1.kettle简介

Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

 

java kettle结束任务 kettle job_java kettle结束任务

 

 

 

Kettle家族目前包括4个产品:Spoon、Pan、CHEF、Kitchen。

SPOON 允许你通过图形界面来设计ETL转换过程(Transformation)。

PAN 允许你批量运行由Spoon设计的ETL转换 (例如使用一个时间调度器)。Pan是一个后台执行的程序,没有图形界面。

CHEF 允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。任务将会被检查,看看是否正确地运行了。

KITCHEN 允许你批量使用由Chef设计的任务 (例如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。

2.Kettle的下载与安装

 kettle的最新下载地址:https://community.hitachivantara.com/docs/DOC-1009855

kettle 8.2版本可以支持windows、linux和mac os操作系统

官方文档:https://wiki.pentaho.com/display/EAI/.01+Introduction+to+Spoon

 

java kettle结束任务 kettle job_java kettle结束任务_02

 

3.运行

kettle中的一个图形用户界面叫spoon,spoon可以设计和运行转换和作业。

 

在windows中执行spoon.bat,在Lunix系统中执行spoon.sh;

 

Spoon是一个图形设计工具,用来设计和测试数据交换处理流程,也可以通过命令行(终端)执行处理流程。

在spoon中设计作业和转换,kettle提供两种方式存储:资源库和文件;

如果你选择资源库,spoon第一次启动时需要创建资源库;选择文件方法,作业保存文件是的扩展名是KJB,转换文件的扩展名为KTR,为了简化学习,下面教程采用后者。

 

java kettle结束任务 kettle job_java kettle结束任务_03

点击后等待一会儿,开启较慢;打开后的界面如下:

 

java kettle结束任务 kettle job_数据_04

4.HelloWorld 示例

Kettle提供了资源库方式的方式来整合所有的工作,但是因为资源库移植不方便,所以我们选择没有资源库;

 

1)创建一个新的transformation,点击 保存到本地路径,例如保存到D:/etltest下,保存文件名为EtltestTrans,kettle默认transformation文件保存后后缀名为ktr;

 

2)创建一个新的job,点击 保存到本地路径,例如保存到D:/etltest下,保存文件名为EtltestJob,kettle默认job文件保存后后缀名为kjb;

 

4.1 转换

在文件->新建装换。

 

新建转换后在左边的主对象树中建立DB连接用以连接数据库。如图所示:

 

java kettle结束任务 kettle job_数据_05

 

建立数据库连接的过程与其他数据库管理软件连接数据库类似。

测试连接oracle数据库

DB连接—>新建

 

java kettle结束任务 kettle job_数据_06

输入所要连接数据库的信息,点击测试看是否正确连接

 

java kettle结束任务 kettle job_java kettle结束任务_07

 

  注意:在数据库链接的过程中,可能会报某个数据库驱动连接找不到的异常。那是因为你没有对应的数据库链接驱动,请下载对应驱动后,放入kettle的lib文件夹,重启即可

如果本地安装着Oracle数据库的话,可以从安装路径:E:\app\product\11.2.0\dbhome_1\jdbc\lib(我的路径),一般选择ojdbc6.jar


4.2 新建“表输入”

左边面板选择:核心对象—>输入—>表输入

 

java kettle结束任务 kettle job_数据_08

 

双击拖过来的表,可以进行编辑;

选择数据库连接和编辑sql语句,在这一步可以点击预览,查看自己是否连接正确。确认无误后,点击确定。

 

java kettle结束任务 kettle job_资源库_09

 

4.3 通过“插入\更新”输出到表

1.在左边面板中选择:核心对象à输出->插入\更新 如图所示:

 

java kettle结束任务 kettle job_资源库_10

2. 编辑插入更新:
  首先:表输入连接插入更新。
  选中表输入,按住shift键,拖向插入更新。

 

java kettle结束任务 kettle job_java kettle结束任务_11

3.然后:双击插入更新,编辑它。编辑完成点击确定

 

java kettle结束任务 kettle job_java kettle结束任务_12

 

此处需要注意的是,输入表,与输出的表,都要真实存在。

 

4.启动测试看执行效果

 

点击执行按钮

 

java kettle结束任务 kettle job_数据_13

查看执行结果:

java kettle结束任务 kettle job_保存文件_14

执行前表数据

java kettle结束任务 kettle job_数据_15

java kettle结束任务 kettle job_资源库_16

 可以看到,输出表ID为1,2,3的age字段数据数据进行了更新,ID为4,5的name,age字段数据进行了更新,id为6的数据进行了插入

 

 

4.4 建立作业

使用作业可以定时或周期性的执行转换,新建一个作业。并从左边面板拖入start 和转换。

java kettle结束任务 kettle job_java kettle结束任务_17

双击start可以编辑,可以设置执行时间等等

java kettle结束任务 kettle job_java kettle结束任务_18

点开装换,可以设置需要执行的转换任务,比如可以执行上面我们做的转换,XXX.ktr

 

java kettle结束任务 kettle job_保存文件_19

 

最后点击运行即可。