kettle中文网: http://www.kettle.net.cn/
来源:https://www.lanhusoft.com/Article/723.html
教程:https://www.dazhuanlan.com/2019/09/29/5d903896ac60c/
Kettle新手入门
一、Kettle的简单介绍
Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
ETL是EXTRACT(抽取)、TRANSFORM(转换)、LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环,也是工作量较大的一块。
kettle有两种脚本transformation(转换)和Job(作业)
Kettle有三个主要组件:Spoon、Kitchen、Pan
Spoon(汤勺):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。windows选择Spoon.bat;Linux选择Spoon.sh
Kitchen(厨房):利用Kitchen可以使用命令行调用Job
Pan(盘子):利用Pan可以用命令行的形式调用Trans
Carte(菜单):Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server。
现在Kettle已经改名为pdi-ce,但是大家还是习惯叫Kettle。本文采用的Kettle版本是pdi-ce-8.3.0.0-371
二、下载并配置相关环境变量和创建表
kettle官网可以下载,由于文件有1个多G,可能比较慢。因此我把它上传到网盘供大家下载。
链接: https://pan.baidu.com/s/1_VaZmYfSxyWQePL18Wp3gQ
提取码: 4uvm
因为Kettle是基于Java的需要安装JDK并配置环境变量。JDK环境变量配置方法这里就不赘述了。
下面是JDK1.8的网盘地址:
链接: https://pan.baidu.com/s/1Yvn0BY8zJZq0WJSvZ2FiZA
提取码: rdas
下面为了测试方便,采用单机同库不同表演示。
原表:lh_local_news(数据源)
表结构:
新表:target_news(数据接收表)
表结构:
三、启动Spoon
windows下需要运行Spoon.bat,linux下运行Spoon.sh:
如果你的机器配置不高比如内存不够,可能启动会比较慢,成功启动后会出现图形化界面:
双击主对象中的转换:
会出现转换相关的选项:
当你遇到启动不出现图形界面,可能有以下原因:
1、路径有中文
2、内存不足
3、环境变量没有设置对
四、配置一个输入
我们创建一个表输入,单击或者拖动“表输入”到右边。这时有边会多一个“表输入”如下图:
双击这个新添加的“表输入”,出现以下配置选项:
可以看到上面数据库连接为空,我们要新建一个连接。点“新建”:
配置完后需要测试一下,可能会出现以下错误提示,是由于没有添加mysql的jar驱动。
错误连接数据库 [localhost_lanhu_portal_simple] : org.pentaho.di.core.exception.KettleDatabaseException:
Error occurred while trying to connect to the database
Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
org.gjt.mm.mysql.Driver
org.pentaho.di.core.exception.KettleDatabaseException:
Error occurred while trying to connect to the database
Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
org.gjt.mm.mysql.Driver
解决:下载对应mysql数据库版本的java驱动,并拷贝到kettle所在的data-integration\lib目录下,重启spoon。
注意:一定要复制对应的数据库版本,还要重启spoon。不然还是要报错。
我数据库的版本为:Server version: 5.7.23,驱动用了mysql-connector-java-5.1.47才行,甚至5.1.48都不行。
最后在sql输入框中输入查在来源表中获取数据的sql。
五、配置一个输出
在输出里面,拖动一个“插入/更新”到右边,选中输入,然后按着“shift”拖动到“插入/更新”
并双击“插入/更新”:
目标表选择新表target_news。查询的关键字是条件,是用来判断是插入还是更新用的,下面是要更新的字段。
注意:表字段是目标表的字段。主键id更新要选择N,不更新主键,不然会报错。
最后运行,并保存个转换为文件,demo.ktr。
六、创建Job
上面的配置的输入和输出(插入/更新),就是数据转换规则。下面需要创建一个job来运行这个转换。
双击“作业”,然后在“通用"里面先拖动一个"start"
双击设置属性
上面的把间隔设置成本每20秒执行一次。确定后再拖一个”转换“出来如下图:
接下来把Start和转换连接起来,选中Start,shift拖动线。
然后双击”转换“设置属性如下图:
Transformation选择上面的的转换规则文件。
最后运行,并保存个转换为文件,demo.kjb。
七、运行
点击小三角运行job看效果。注意原来表target_news是空表。
运行成功后可以看到数据已经成功同步过来了。
如果要测试更新或增量同步。可以在原表插入表条记录或修改一条记录,等20秒左右就能在target_news中找到对应的记录。
八、通过脚本运行
除了通过上面的Spoon工具来运行转换或脚本也可以通过脚本来运行,这样不用启动图形化,性能和速度会一些。
比如cmd命令下。
运行转换:
D:\pdi-ce-8.3.0.0-371\data-integration>Pan.bat /file=D:\pdi-ce-8.3.0.0-371\data-integration\demo\demo.ktr
运行job:
ps:其实运行job会隐式的运行转换,因为一般job里面都会添加转换。也就是Kitchen里面包含了Pan的调用。
更多资源:
Kettle官网:https://community.hitachivantara.com/docs/DOC-1009855
Kettle开源地址:https://github.com/pentaho/pentaho-kettle/
kettle JOB kitchen 命令行参数 脚本写法
/ref 资料库名称
/user 用户名
/pass 用户密码
/job 要启动的作业名称
/dir 目录(不要忘了/前缀)
/file 要启动的文件名(转换文件)
/level 日志级别
/logfile 要写入的日志文件
/listdir 列出资料库的目录
/listjobs 列出指定目录下的作业
/listrep 列出可用资料库
/expref 将资料库里所有对象导出到xml文件
/noref 不要将日志写到资料库中
/safemode 安全模式下运行,有额外检查
/version 显示转换的版本,校订和创建日期
/param 设置参数,参数格式为<name>=<value>,例如 -param.foo=bar 或者 /name:value
/listparam 列出转换里已经设置好的参数
/export 把作业依赖的所有资源导出到一个zip文件里
/maxloglines 内存中保存日志的最大日志行数
/maxlogtimeout 内存中保存日志的最长时间
启动脚本写法
kitchen.bat /file /kettle_pdi_ce/nowData/cfg/use/calcjob.kjb /level Basic /logfile /kettle_pdi_ce/nowData/log/log.log
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2018-07-06 Modbus RTU 协议使用汇总