Kettle 概述
Kettle 是一款开源的 ETL(Extract, Transform, Load)工具,全称为 “Kettle E.T.T.L. Environment”。其核心功能围绕数据处理流程的三个关键阶段:
Extract(抽取)
支持从多样化数据源获取数据,包括关系型数据库(MySQL、Oracle)、文件(Excel、CSV)、NoSQL 数据库及 Web 服务等。
Transform(转换)
提供数据清洗、聚合、字段计算、去重等操作。例如,可通过内置函数处理日期格式、过滤无效记录或合并多数据源字段。
Load(加载)
将处理后的数据加载至目标系统,如数据仓库、报表数据库或云存储服务。支持批量插入、更新或增量同步等模式。
名称“Kettle”源自项目理念:将数据视为液体,通过“壶”统一处理并按需输出。
一、Kettle 是什么?
1.1 基本定义
Kettle 是一款开源的 ETL 工具,ETL 是数据仓库领域的核心概念,包含三个步骤:
Extract(抽取):从各种数据源读取数据
Transform(转换):清洗、加工、转换数据
Load(加载):将处理好的数据存入目标系统
Kettle 的全称曾为 "KDE Extraction, Transportation, Transformation and Loading Environment",由主程序员 Matt Casters 于 2003 年发起。这个项目名称的灵感来源于一个比喻:把各种数据放进一个壶(Kettle)里,然后按指定的格式流出来。
1.2 发展历程
| 时间 | 里程碑事件 |
|---|---|
| 2003年 | Matt Casters 发起 Kettle 项目 |
| 2005年12月 | Kettle 进入开源领域 |
| 2006年 | 被 Pentaho 公司收购,更名为 Pentaho Data Integration (PDI) |
| 2015年 | Pentaho 被 Hitachi Data Systems 收购 |
| 2017年 | Hitachi Data Systems 更名为 Hitachi Vantara |
截至 2021 年 1 月,Kettle 开源版累计下载量达 836 万次,其中 19% 来自中国,国内用户仍习惯称其为 Kettle。
1.3 Kettle 的架构
Kettle 是一个组件化的集成系统,包含以下几个主要部分:
| 组件 | 类型 | 主要功能 |
|---|---|---|
| Spoon | 图形化界面 | 设计、调试 ETL 流程(核心开发工具) |
| Pan | 命令行工具 | 执行转换(Transformation) |
| Kitchen | 命令行工具 | 执行作业(Job) |
| Carte | 轻量级 Web 服务 | 远程执行、集群部署 |
| Encr | 命令行工具 | 字符串加密(如数据库密码) |
1.4 核心概念:转换(Transformation)与作业(Job)
Kettle 的工作分为两个层次:
转换(Transformation,以 .ktr 结尾)
定义数据操作的容器,是比作业更细粒度的执行单元
内部的 Step 是最小执行单元,每个 Step 完成一个特定功能(如读取表、过滤数据)
Step 之间通过 Hop(连接线)连接,数据在其中流动
Step 是并行执行的
作业(Job,以 .kjb 结尾)
负责将转换组织在一起,完成更大的工作任务