一、简介
Kettle 是一款功能强大的开源 ETL(Extract-Transform-Load,数据抽取、转换、装载)工具,其全称为 KDE Extraction, Transportation, Transformation and Loading Environment。该工具最初源自 K Desktop Environment(KDE)项目,经过多年发展已成为数据处理领域的重要工具。2006 年,Pentaho 公司正式收购了 Kettle 项目,其创始人 Matt Casters 也随之加入 Pentaho 团队,担任数据集成工程师的要职。此次收购后,Kettle 被整合进 Pentaho 企业级数据集成及商业智能套件,并正式更名为 Pentaho Data Integration(PDI),成为该套件的核心组件之一。2015 年,Hitachi(日立)Data Systems 完成了对 Pentaho 公司的收购,进一步推动了 Kettle 的发展。
作为一款跨平台的数据处理工具,Kettle 采用 Java 语言开发,支持在 Windows 和 Linux 系统上稳定运行。其绿色免安装的特性使得部署过程极为便捷,同时具备高效稳定的数据抽取能力。Kettle 提供商业版和开源版两个版本,满足不同用户群体的需求。在当今数字化转型的大背景下,数据处理已成为企业发展的核心环节,而数据处理的关键流程包括数据抽取、统计分析、转换和装载等步骤。随着企业对数据处理需求的不断增长,对具备 ETL 技能的工程师的需求也日益迫切,他们需要运用 Kettle 等工具来完成复杂的数据处理任务,为企业决策提供可靠的数据支持。Kettle 的持续发展和广泛应用,不仅推动了 ETL 技术的进步,也为企业数字化转型提供了强有力的技术支撑。
官网下载: https://pentaho.com/download/,解压后,windows运行Spoon.bat,linux运行spoon.sh
二、KETTLE核心功能
作业(Job)是Kettle中的核心概念之一,通常被称为步骤流或控制流。它作为任务执行的顶层容器,能够组织和协调多个子任务的执行流程。在作业中,用户不仅可以挂载转换任务(Transformation),还可以嵌套其他作业任务,形成复杂的任务执行链。作业的执行遵循严格的顺序逻辑,各个组件按照预定义的顺序依次执行,同时支持对执行结果进行条件判断,从而实现灵活的分支处理。作业的功能十分强大,它能够执行多种操作,包括但不限于检测数据表或文件是否存在、执行Shell脚本、运行SQL脚本、获取外部数据、发送邮件通知等。通过作业的编排,用户可以构建完整的数据处理流程,实现从数据采集、处理到结果输出的全生命周期管理。
转换(Transformation)是Kettle中另一个重要概念,在大多数应用场景下,它可以直接被称为"数据流"。转换专注于完成数据的输入、处理和输出过程,是数据加工的核心环节。与作业的顺序执行不同,转换任务一旦启动,其中的所有组件会同时启动,形成一个并行处理的数据管道。转换中的每个组件都经过精心配置,能够逐条处理数据记录,实现数据的清洗、转换、过滤、聚合等操作。转换任务的设计遵循数据流的思想,通过连接不同的处理组件,构建出清晰的数据处理路径。转换与作业的配合使用,使得Kettle能够处理从简单到复杂的各种数据处理需求,为企业的数据集成和分析提供了强大的技术支持。通过灵活运用作业和转换,用户可以构建出高效、可靠的数据处理流程,满足不同业务场景下的数据处理需求。
三、数据库连接MYSQL
1.下载mysql对应版本的java驱动:https://mvnrepository.com/artifact/mysql/mysql-connector-java,windows选择Platform Independent下载
2.把解压后的jar包放到data-integration\lib目录
3.重启kettle,测试是否可以连接
四、ETL连接线
1.黄色的锁:无论上一步是否执行成功,将会继续向下执行
2.绿色的对勾:上一步的任务执行成功,没有任何错误的时候才会执行下一步
3.红色停止:上一步的任务执行结果为假或者没有成功执行时,执行下一个作业项
4.圆圈i字母:表示获取上一步骤的参数并执行表输入,使用?引用变量,?使用与参数位置对应,比如:第一个问号,代表查询结果中的第一个值
五、作业和转换的使用
1.在作业中引用作业:通用>作业控件
2.在作业中引用转换:通用>转换控件
3.在转换中引用作业:流程>执行作业控件
4.在转换中引用转换:流程>Transformation exexutor控件
六、变量传递示例
1.在作业中传递变量
2.作业向转换中传递变量
3.在sql脚本查询结果转变量,注意这里的sql只能获取一条记录
4.在sql脚本中使用变量
5.作业循环变量
七、如何将某表的数据导入到另一张表
1.转换:输入>表输入、输出>表输出
2.转换,表输入>插入/更新控件:根据条件有就更新,没有就插入数据
3.转换,表输入>更新控件:根据条件有就更新数据
4.转换,转换>字段选择:转换流字段与目标表字段名不一样的字段
八、定时任务配置
1.通过作业配置定时任务,终止作业定时任务也会中止
2.windows通过bat或文件配置定时任务
"""创建runJob.cmd文件,运行kettle作业或转换""""
##防止bat脚本内容中的中文乱码
chcp 65001
##Kitchen.bat(pan.bat)所在路径盘符
D:
##CD到Kettle的data-integration所在路径
cd D:\Program Files\pdi-ce-9.4.0.0-343\data-integration
##找到放脚本的位置并且执行,后面接转换(作业)所在路径,参数看参数表对应着写
##输出日志
kitchen /file "D:\selfWork\kettle\作业 1.kjb" /Level:Basic > "D:\selfWork\kettle\1.log"
3.windiows通过任务计划程序管理任务
- 管理员身份运行任务计划程序
- 创建Kettle任务
- 点击创建任务
- 创建任务界面切换操作tab,选择定时任务的启动程序文件
- 创建任务界面切换触发器tab,根据需要配置定时任务
- 选择任务,邮寄或者右侧面板选择运行即可
5.Unix 系统(如 Linux、macOS 等)中使用crontab命令运行管理定时任务
- crontab -e:编辑当前用户的定时任务列表,如果文件不存在会自动创建,如需删除定时任务,只需删除想要移除的任务行,然后保存并退出编辑器。
- crontab -l:查询当前用户的所有定时任务
- crontab -r:全部删除
* crontab -e
* time command script-arg
*
* time:时间调度,具有以下四种格式:
- 0 8 * * *:每天早上 8 点执行任务。
- 0 0 * * 1:每周一的午夜 0 点执行任务。
- 0 12 1 * *:每月 1 号的中午 12 点执行任务。
- */15 * * * *:每 15 分钟执行一次任务。
*
* command:脚本命令路径,如:data-integration/spoon.sh
*
* script-arg:脚本参数
-file:指定要运行的 Kettle 作业文件(.kjb)或者转换文件(.ktr)的路径
-level:设置日志等级,如:-level=basic>logFilePath
Error:仅记录错误信息。
Debug:记录详细的调试信息。
Rowlevel:记录每一行数据处理的详细信息,日志量最大。
Minimal:只记录最少的必要信息。
Detailed:记录较为详细的信息,比 basic 详细但不如 debug。
-user:用户名 -pass:密码:用于连接 Kettle 资源库时的身份验证
-dir:/目录路径:当使用资源库时,指定作业或者转换所在的目录
2>&1:将标准错误输出重定向到标准输出,也就是一起写入到 logFilePath 文件中。
*/
crontab -e
*/30 * * * * kettle/data-integration/spoon.sh -file=kettle/project/job.kjb -level=basic>kettle/project/job.log 2>&1