Kettle(现称Pentaho Data Integration)是一款开源ETL工具,通过图形化界面实现数据抽取、转换和加载。
安装需Java 8环境,下载压缩包解压至无中文路径后运行Spoon.bat启动。
核心组件包括Spoon(设计工具)、Pan/Kichen(执行引擎)和Carte(调度服务)。
它能连接多种数据源(如MySQL、HDFS),与Hue形成互补——Kettle专注ETL流程开发,Hue侧重大数据平台管理与查询。
典型应用场景包括构建数据仓库ETL管道,处理多源异构数据集成任务。
注意需配置JDBC驱动连接数据库,且建议在资源充足环境下运行。
Kettle 下载和安装
一、Kettle 是什么
Kettle(现在叫Pentaho Data Integration / PDI)是一款开源的ETL 工具(Extract-Transform-Load,即数据抽取、转换、加载)。
它通过图形化界面(叫Spoon)让你用“拖拽组件”的方式设计数据处理流程,不需要自己写代码。
为什么大数据开发要学它?因为在真实工作中,你需要从各种数据源(MySQL、HDFS、文件等)把数据抽取出来,经过清洗转换后,再加载到目标系统——Kettle 就是做这件事的标准工具之一。
核心组件(了解即可):
| 组件 | 作用 |
|---|---|
| Spoon | 图形化设计工具(你主要用这个) |
| Kitchen | 命令行执行作业(Job) |
| Pan | 命令行执行转换(Transformation) |
| Carte | 轻量级 Web 服务,支持远程调度 |
二、安装 Kettle
2.1 下载安装包
选择最新稳定版本(如pdi-ce-9.x.x.x-x.zip)下载。
SoucreForge 的官方页面现在只提供最新的社区版下载(目前是版本 10),历史版本需要从其他途径获取。
打开以下链接,它会自动选择最近的 SourceForge 镜像站开始下载:
pdi-ce-9.4.0.0-343.zip(约 1.2GB,相对较新):
https://netcologne.dl.sourceforge.net/project/pentaho/Pentaho%209.4/client-tools/pdi-ce-9.4.0.0-343.zippdi-ce-9.3.0.0-428.zip(稳定版):
https://sourceforge.net/projects/pentaho/files/Pentaho%209.3/client-tools/pdi-ce-9.3.0.0-428.zip/download
📌提示:SourceForge 会自动匹配下载镜像,点击后可能需要等待几秒钟才会开始下载。如果速度慢,可以复制链接到迅雷等多线程工具下载。
文件大小:约 1.2GB,下载需要几分钟。
重要提示:Kettle 是基于 Java 的,需要JDK 1.8环境,不支持更高版本(如 JDK 11/17)。
安装 Kettle 的基本要求
检查项 要求 Java 版本 JDK 1.8(Java 8),不支持 11/17 系统 Windows/macOS/Linux 均可 解压路径 不要有中文或空格(如 D:\kettle)
2.2 验证 Java 环境
在 Windows CMD 或 PowerShell 中执行:
bash
java -version
必须是java version "1.8.0_xxx"。
注意:如果提示“不是内部或外部命令”,通常意味着安装程序没有自动配置环境变量。这时你需要手动配置
JAVA_HOME。
如果你当前是 Java 17(之前在 WSL 里装的),有两个选择:
直接用 Windows 安装 Java 8:不影响 WSL 里的 Java 17,两个环境独立共存
安装后手动切换:用
update-alternatives在 WSL 里切换,但 Kettle 是在 Windows 运行的,所以应该在 Windows 上安装 Java 8
在 Windows 上安装 Java 8 的步骤:
从 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 下载 Windows x64 安装包
安装后,环境变量里
JAVA_HOME指向 JDK 8 路径,PATH里加上%JAVA_HOME%\bin
⚠️ 注意:如果你 Windows 上有多个 Java 版本,确保
java -version显示的是 1.8。
这个版本被认为是 JDK 8 的“终极免费版”,非常适合您的学习环境。
为什么必须选这个版本?
Kettle 的硬性要求:Kettle (Pentaho Data Integration) 必须运行在Java 8 (JDK 1.8)上,更高或更低的版本都会导致软件无法启动或报错。
“终极免费版”:您选的JDK 8u202是 Oracle 官方提供的最后一个对个人和企业均免费的公开版本。之后的版本都涉及到商业付费许可,对于学习而言完全没必要承担授权风险。
简单来说,您下载的这个文件,就是启动 Kettle 的“钥匙”。
注意 ,安装时保持默认安装路径(通常是
C:\Program Files\Java\jdk1.8.0_202)即可。
我的Java版本
我的java安装路径在这 C:\Program Files\Java\jdk1.8.0_261
手动配置 JAVA_HOME(Windows 11)
第一步:找到 JDK 安装路径
默认安装路径通常是:
text
C:\Program Files\Java\jdk1.8.0_202确认路径:打开文件资源管理器,进入上述目录,确保能看到
bin、lib、include等文件夹。如果你的 JDK 装在其他位置,记住那个路径就行。
第二步:打开环境变量设置
按
Win + R,输入sysdm.cpl,回车点击高级选项卡
点击环境变量按钮
第三步:新建系统变量
在系统变量区域(下方框),点击新建:
字段 填写内容 变量名 JAVA_HOME变量值 C:\Program Files\Java\jdk1.8.0_261(你的实际路径) 点击确定。
第四步:编辑 Path 变量
在系统变量区域,找到
Path变量,选中后点击编辑点击新建,添加以下两条(每一条单独添加):
text
%JAVA_HOME%\bin %JAVA_HOME%\jre\bin点击确定保存
第五步:验证配置
按
Win + R,输入cmd,回车分别执行以下命令:
bash
echo %JAVA_HOME%应该显示你的 JDK 路径。
bash
java -versionbash
javac -version如果验证失败
问题 解决方法 echo %JAVA_HOME%没显示检查变量名是否拼写正确( JAVA_HOME,不是JAVA_HOME_PATH)java不是内部命令检查 Path中是否添加了%JAVA_HOME%\bin显示版本不是 1.8 说明有其他 JDK 版本在 Path中更靠前,需要调整顺序如果
java -version显示的不是 1.8说明有其他版本的 Java 在
Path中优先级更高。解决方法:
在
Path环境变量中,把%JAVA_HOME%\bin移动到最上面重新打开 CMD 窗口验证
如果还是显示
%JAVA_HOME%可能原因:
原因 解决方法 变量名拼写错误 检查是 JAVA_HOME还是JAVA HOME(不能有空格)没有重新打开 CMD 必须关闭旧窗口,开新窗口 用户变量和系统变量混淆 确保是在系统变量中添加,不是用户变量 重新验证
重要:必须重新打开一个新的 CMD 窗口而不是新的标签页(之前打开的不会自动加载新环境变量)。
配置完成后的下一步
环境变量配置好后,Kettle 就能找到 Java 了。
Microsoft Windows [版本 10.0.26200.8037] (c) Microsoft Corporation。保留所有权利。 C:\Users\86178>echo %JAVA_HOME% C:\Program Files\Java\jdk1.8.0_261接下来:
解压你下载的
pdi-ce-xxx.zip到D:\kettle(或任意无空格、无中文的路径)进入
data-integration文件夹双击
Spoon.bat启动 Kettle首次启动需要 1-2 分钟加载依赖,耐心等待即可。
2.3 解压 Kettle
将下载的
pdi-ce-xxx.zip解压到没有空格、没有中文的路径,比如D:\kettle解压后的文件夹叫
data-integration
目录结构:
text
data-integration/ ├── Spoon.bat ← Windows 启动脚本(双击这个) ├── Spoon.sh ← Linux/macOS 启动脚本 ├── lib/ ← 依赖 Jar 包 ├── classes/ ← 配置文件 ├── plugins/ ← 插件目录 └── ...
2.4 启动 Spoon
进入
data-integration目录双击
Spoon.bat(首次启动需要 1-2 分钟加载依赖)
我的解压路径 D:\appData\Kettle\data-integration
这里也可以用命令行的方式启动
# 进入 Kettle 目录(根据你的实际解压路径) D: cd D:\kettle\data-integration # 启动 Spoon.bat
如果启动失败:
检查
java -version是否是 1.8检查
JAVA_HOME环境变量是否正确配置如果界面乱码,在
Spoon.bat中找到set PENTAHO_DI_JAVA_OPTIONS=,后面加上-Dfile.encoding=UTF-8
2.5 启动成功的标志
看到 Spoon 图形界面(左侧是"核心对象"面板,中间是画布,右侧是执行结果面板),安装就成功了。
三、Kettle 与你的 WSL 环境的配合
Kettle 在Windows 上运行(可视化操作),数据处理时需要通过 JDBC 驱动连接到各种数据源。
你已有的环境:
| 组件 | 位置 | Kettle 能否连接 |
|---|---|---|
| MySQL | WSL 中运行(端口 3306) | ✅ 能,WSL 服务 Windows 可访问 |
| Hadoop HDFS | WSL 中运行 | ✅ 能,通过配置 WebHDFS 或 HTTPFS |
| Sqoop | WSL 中命令行 | Kettle 本身有替代方案(表输入/输出步骤) |
通俗理解:
Spoon(Windows)→ 设计流程的"画板"
Job/Transformation→ 你拖拽出的"流程图"
Pan/Kitchen(命令行)→ 实际跑流程的"引擎"
Carte→ 远程服务的"调度器"
四、连接 WSL 中的 MySQL
Kettle 需要 MySQL 的 JDBC 驱动才能连接:
下载驱动:https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar
放入 Kettle lib 目录:复制 jar 文件到
data-integration/lib/下重启 Spoon
在 Spoon 中创建数据库连接:
连接类型:MySQL
主机名:
localhost数据库名:
test(或其他)端口号:
3306用户名:
root密码:你设置的密码
点击测试按钮,如果显示 "连接成功" 就说明配置对了
查看WSL 中的 MySQL都有哪些数据表
第一步:连接 WSL 并登录 MySQL
在MobaXterm中(已连接到 WSL),执行:
bash
mysql -u root -p输入你的 MySQL 密码(就是之前设置的
123456或你实际设置的密码)。第二步:查看所有数据库
登录后,执行:
sql
SHOW DATABASES;你会看到类似这样的输出:
text
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | | lee | | A2608 | | metastore | | mumu | +--------------------+第三步:选择数据库并查看表
以
test数据库为例:sql
USE test; SHOW TABLES;输出示例:
text
+----------------+ | Tables_in_test | +----------------+ | users | | employees | +----------------+第四步:查看表结构
sql
DESCRIBE users;或者:
sql
SHOW COLUMNS FROM users;第五步:查看表中的数据
sql
SELECT * FROM users;一次性查看所有数据库和表的命令
如果你想要一个完整的清单,可以执行:
bash
mysql -u root -p -e "SHOW DATABASES;"然后对每个数据库查看表:
bash
mysql -u root -p -e "USE test; SHOW TABLES;"或者写一个简单的脚本:
bash
mysql -u root -p --skip-column-names -e "SHOW DATABASES" | while read db; do echo "=== Database: $db ===" mysql -u root -p -e "USE $db; SHOW TABLES;" done
注意:这个脚本会多次要求输入密码,可以直接在命令中加
-p123456(但不太安全)。
总结
命令 作用 SHOW DATABASES;查看所有数据库 USE 数据库名;切换到指定数据库 SHOW TABLES;查看当前数据库的所有表 DESCRIBE 表名;查看表结构 SELECT * FROM 表名;查看表中数据 现在在 MobaXterm 中执行
mysql -u root -p登录,然后依次执行上面的命令。
五、如何跟着老师的教程
打开 Spoon:双击
Spoon.bat创建作业/转换:在 Spoon 中"文件" → "新建" → "作业"或"转换"
按老师讲的配置步骤:从左侧"核心对象"面板拖拽组件到画布,双击配置参数
保存文件:作业文件以
.kjb结尾,转换文件以.ktr结尾执行:点击菜单栏的运行按钮(绿色三角形)或按
F9
六、常见问题
| 问题 | 解决方法 |
|---|---|
启动 Spoon 报错Could not find or load main class | Java 版本不是 1.8,检查java -version |
| 界面乱码 | 在Spoon.bat中添加-Dfile.encoding=UTF-8 |
| 连接 MySQL 报错 | 检查 MySQL 驱动是否在lib目录下 |
| 路径不能有中文 | 把data-integration文件夹移到无中文路径 |
| 问题 | 解决方法 |
|---|---|
| 连接 MySQL 报错 | 确认 WSL 中 MySQL 已启动:sudo service mysql status |
| 找不到 MySQL 驱动 | 下载mysql-connector-j-8.0.33.jar放入data-integration/lib/目录 |
| 测试连接失败 | 检查主机名是否是localhost,WSL 的 MySQL 默认 Windows 可访问 |
总结
| 步骤 | 操作 |
|---|---|
| 确认 Java 版本 | java -version必须是 1.8 |
| 下载 Kettle | 从 SourceForge 下载pdi-ce-xxx.zip |
| 解压 | 解压到无空格、无中文路径(如D:\kettle) |
| 启动 | 双击Spoon.bat |
| 连接数据库 | 把 MySQL JDBC 驱动放入lib/目录 |
Kettle 打开来,显示的名字是Spoon,我还以为是打开的Sqoop客户端
这个误会很常见!Spoon和Sqoop名字确实有点像,容易搞混。我来帮你彻底分清:
一、名字的由来
| 名称 | 全称 | 含义 |
|---|---|---|
| Spoon | Kettle 的图形化设计器 | 字面意思是"勺子",用来"舀"数据(ETL 的生动比喻) |
| Sqoop | SQL to Hadoop | 字面意思是"SQL 到 Hadoop",功能就是名字本身 |
Kettle 整套工具的名字都跟厨房有关:
Spoon(勺子)= 图形化设计器
Pan(平底锅)= 命令行执行转换
Kitchen(厨房)= 命令行执行作业
Carte(菜单)= 远程服务
所以你打开的是Kettle 的图形化设计器叫 Spoon,不是 Sqoop。
两者功能完全不同:
| 对比 | Spoon (Kettle) | Sqoop |
|---|---|---|
| 定位 | ETL 工具 | 数据迁移工具 |
| 操作方式 | 图形化拖拽 | 命令行 |
| 核心功能 | 复杂的数据清洗、转换、合并、分流 | 批量导入/导出数据库与 Hadoop 之间 |
二、Kettle (Spoon) 到底和 Sqoop 什么关系?
可以这样理解:
Sqoop 是"传送带",Spoon 是"加工车间"
text
业务数据库 (MySQL) │ │ Sqoop 批量导入 ▼ HDFS/Hive ←─── 如果数据格式简单、无需复杂清洗,走到这里就可以结束 │ │ Spoon 设计复杂 ETL 流程 ▼ 清洗后的数据 │ │ 可再通过 Sqoop 导出或其他方式 ▼ 最终目标表 / 数据仓库
实际操作中的分界线:
| 使用场景 | 用什么工具 | 为什么 |
|---|---|---|
| 每天凌晨把整个表从 MySQL 同步到 Hive | Sqoop | 数据量大,需要并行传输;格式简单,直接映射即可 |
| 把 Hive 里的数据做异常值处理、字段拆分合并、多表关联后再存储 | Spoon (Kettle) | 清洗规则多变;需要可视化调试;业务逻辑经常调整 |
| 既要同步又要清洗 | Sqoop + Spoon | 先用 Sqoop 快速拉取原始数据到 Hive,再用 Spoon 从 Hive 读取并加工 |
两者是互补关系,不是替代关系。
三、为什么会有这个误会?
可能的原因:
接触顺序导致错觉:你先接触了 Sqoop(导入导出 MySQL),那是必要的搬运环节。紧接着现在学 Kettle,打开后窗口标题是 "Spoon",你下意识就联想到 Sqoop,毕竟两个都以 S 开头,又都和数据迁移相关。
Spoon 功能强大导致混淆:Spoon 能读 MySQL、写 MySQL,能读 HDFS、写 HDFS,看起来很全能。所以你可能会认为它是不是已经包含了 Sqoop 的功能?严格来说,它们在某些使用场景上确实有重叠,但 Spoon 底层处理数据是在内存或本地文件中逐条进行;Sqoop 是将任务翻译成MapReduce 程序在 Hadoop 集群里并行处理,两者的定位和性能优势完全不同。
没有分清两者的分工:只学了 Sqoop 命令,然后开始学 Kettle,但没有专门强调两者的分工关系。应该记住:Spoon 是 ETL 画布,主要用于设计清洗规则;Sqoop 是高速传输管道,适合在数据库和 HDFS/Hive 之间批量搬数据。功能重叠的部分不必纠结,你需要同时掌握两者,因为未来工作中两个场景都会遇到。
四、总结一张表,清楚分清
| 对比项 | Sqoop | Spoon (Kettle) |
|---|---|---|
| 你是否在用 | ✅ 你在 WSL 里已经安装配置好了 | ✅ 你现在正在 Windows 里打开学习 |
| 它是什么 | 命令行数据迁移工具 | 图形化 ETL 设计工具 |
| 什么时候用 | 数据库 ↔ HDFS/Hive 大量数据快速搬移 | 设计复杂数据处理流程;数据清洗、转换、合并、分流 |
| 示例任务 | sqoop import --connect jdbc:mysql://... | 在 Spoon 里拖拽一个“表输入”,一个“字段选择”,一个“表输出”,连线组成转换 |
| 是否依赖 Hadoop | ✅ 是,它生成 MapReduce 作业 | ❌ 否,可以独立运行,也可以连接 Hadoop |
| 有无图形界面 | ❌ 无 | ✅ 有(就是 Spoon 窗口) |
一句话记住区别:
Sqoop:给程序员用的"高速搬运指令",在终端里敲命令,大量数据批量搬。
Spoon:给数据工程师用的"可视化 ETL 画板",用鼠标拖拽,复杂规则快速配。
Hue 和 kettle 有什么区别
Hue 与 Kettle 核心区别一览
这两个工具虽然都服务于大数据领域,但定位和核心用途完全不同。
简单来说,Hue 是面向Hadoop生态的Web端图形化管理及查询工具,而 Kettle 是面向数据集成的桌面端图形化ETL开发工具。
以下是详细的对比:
| 对比维度 | Hue (Hadoop User Experience) | Kettle (Pentaho Data Integration) |
|---|---|---|
| 核心定位 | Hadoop 大数据平台的Web操作与管理界面 | 数据集成与ETL(抽取、转换、加载)开发工具 |
| 主要功能 | 通过Web界面查询、浏览、管理Hadoop组件,如HDFS、Hive、Impala、Oozie等 | 通过拖拽组件设计数据处理流程,完成复杂的数据清洗、转换、合并、加载等任务 |
| 运行架构 | Web应用程序 (Browser/Server) • 部署在服务器端,用户通过浏览器访问 | 桌面客户端 (Client/Application) • 主要通过Spoon.bat/sh在本地启动图形界面 |
| 目标用户 | 大数据平台的管理员、数据分析师、数据工程师 | 数据集成开发者、数据仓库工程师、ETL开发人员 |
| 典型使用场景 | • 在Hive/Impala中执行SQL查询并查看结果 • 浏览HDFS文件系统,上传/下载文件 • 可视化编排Oozie工作流 | • 从MySQL、CSV、API等多源抽取数据,经清洗转换后加载至目标库 • 构建数据仓库的ETL流程 • 实现定时作业调度 |
| 数据处理能力 | 侧重交互式查询与分析,查询结果行数有限制 | 侧重批量数据集成与复杂ETL逻辑,处理能力强 |
| 界面/操作方式 | Web UI,提供文件浏览器、查询编辑器等网页应用界面 | 基于SWT的桌面GUI (Spoon),通过拖拽"步骤"和"跳"来设计流程,类似流程图设计工具 |
| 对大数据平台依赖 | 强依赖。必须与Hadoop、Hive等组件协同工作才能发挥价值 | 独立或依赖。可独立运行处理关系数据库、文件,也可对接Hadoop、Spark等大数据平台 |
| 核心组件 | 文件浏览器、查询编辑器(Hive/Impala)、作业管理器(Oozie) | Spoon (图形设计器)、Pan (转换执行引擎)、Kitchen (作业执行引擎)、Carte (轻量级服务) |
| 开发商/许可证 | 开源 (Apache License),由Cloudera等公司主导开发 | 开源 (LGPL),原为Pentaho产品,现隶属于Hitachi Vantara |
| AI集成能力 | 较新版本支持集成LLM,提供自然语言生成SQL等AI辅助功能 | 无原生AI能力,但可通过组件集成Python/R进行机器学习 |
💡 如何选择?
选择 Hue:当你需要在一个统一的Web界面上,方便地查询Hive表里的数据、浏览HDFS上的文件,或者查看YARN上正在运行的任务时。它是大数据平台的一个“综合管理台”。
选择 Kettle:当你的核心任务是构建复杂的数据管道,比如每天需要从10个不同结构的业务系统数据库中抽取数据,进行字段映射、数据清洗、格式转换,最后加载到一个集中的数据仓库里。它是ETL开发的“主力工具”。
可以两个都安装吗
Hue 和 Kettle 完全可以同时安装,它们之间并不冲突,协同工作的效果反而更好。
Hue 是一个 Web 应用,主要部署在服务器上,作为 Hadoop 生态的图形化操作界面;而 Kettle 是一款桌面 ETL 工具,通常在你自己的电脑上运行,用于开发数据处理流程。两者的运行环境和核心定位截然不同,因此不会产生端口冲突或资源抢占问题。
更进一步说,它们的关系通常是“互补”的。你可以把 Kettle 看作是进行数据抽取、清洗和加载(ETL)的主力“生产工具”,用来构建复杂的数据管道;而 Hue 则是用来查询管道最终结果(比如查 Hive 表)或管理底层存储(比如 HDFS 文件)的“管理界面”。
例如,你完全可以在 Kettle 中设计流程,将 MySQL 的数据处理后写入 Hive 表,然后打开 Hue 的界面,直接查询这张 Hive 表来验证数据是否正确。若需要调度运行,Kettle 生成的转换(Transformation)也可以提交给 Hadoop 集群执行,然后通过 Hue 监控作业状态。
所以,在你的 WSL 实验环境中,建议放心安装。唯一需要注意的是,你的学习电脑内存是否足够支撑 Hadoop 生态组件(包括 Hue)和 Kettle 桌面端同时运行。如果内存吃紧(如只有 8GB),可以不必让 Hue 的后台服务随系统自启,在需要查询 Hive 或管理 HDFS 时再手动启动它。
资源占用预估
| 服务/工具 | 预估内存占用 | 说明 |
|---|---|---|
| WSL2(基础运行) | ~1-2 GB | Ubuntu 系统本身 |
| Hadoop(HDFS + YARN) | ~4-6 GB | 单机模式/伪分布式 |
| Hive(Metastore + HiveServer2) | ~1-2 GB | 可选,按需启动 |
| Hue(Web UI) | ~1-2 GB | 需要启动其服务 |
| MySQL | ~500 MB - 1 GB | 已在 WSL 中运行 |
| Kettle (Spoon) | ~1-2 GB | 桌面端,运行 ETL 流程时 |
| 总计 (全部运行) | ~10-15 GB |
建议的使用方式
日常实验:WSL2 中运行 Hadoop + Hive + MySQL,用 Kettle 开发 ETL 流程,两者可以无缝配合。
Hue 的使用:如果你只是想学习 Hue 的界面,可以安装。但考虑到配置 Hue 需要多步设置(安装依赖、配置与 Hadoop/Hive 的集成等),如果只是为了学习 ETL 而暂时不涉及 Hive 查询界面,可以先不安装 Hue,避免引入额外复杂度。