1. 项目概述与Kettle能解决什么问题
做数据工作的人迟早会遇到一个矛盾:手里的数据七零八落,Excel表、CSV文件、业务数据库、日志文本各说各话,想要把它们整合到一块儿,靠手工复制粘贴能把人逼疯。我第一次接触Kettle(现在官方名字叫PDI,Pentaho Data Integration)就是在这种场景下。
那时候手里的活是给某公司的报表系统做数据对接,上游给我一堆Excel和TXT格式的明细数据,下游要求落进MySQL库。数据量不算大,几万行而已,但每周都要重复一次,手工处理既慢又容易出错。Kettle就是在这个节点进入视野的。
简单说,Kettle是一个开源的ETL工具。ETL三个字母拆开是Extract、Transform、Load,也就是抽取、转换、加载。它用图形化的方式让你把“从哪读数据、中间怎么处理、最后写到哪”这条链路拖拽出来,存成一个转换文件,以后想跑多少遍都行,还能定时调度。比起写一堆Python脚本或者SQL存储过程,Kettle的上手门槛低得多,尤其适合业务人员和刚入行的数据开发。
这篇教程是系列的第一篇,我按自己实际使用的经验来写,重点解决三个问题:Kettle怎么装起来、核心概念怎么理解、第一个实际转换怎么做通。后面的系列再逐步讲作业调度、复杂转换、性能优化和集群部署。适合完全没有接触过ETL工具的新手,也适合用过但一直没把概念理清的开发者。
2. 安装部署与基础环境准备
2.1 版本选择和我踩过的JDK坑
Kettle的安装比大多数人想象中简单,下载解压就能用。但版本和JDK的匹配关系是第一个坑,我见过不少人在这一步卡住。
目前主流的版本是8.x和9.x。8.3版本对应JDK 8,9.x版本用的是JDK 11或17(不同小版本要求不一样)。我的建议是新手直接选择9.x的最新稳定版,配合JDK 11使用。选这个组合的原因是:9.x在界面、性能和驱动支持上都比8.x完善,而JDK 11既稳定又不会像17那样在一些老驱动的兼容性上出问题。
下载的地方是官方发布的社区版压缩包,注意选那个不带额外依赖的zip包就行。解压后目录结构大概是这样的:
>