目录
一、Kettle是什么
Kettle最早是一个开源的ETL(Extract-Transform-Load,数据仓库技术)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。在2006年,Pentaho公司收购了Kettle项目,原Kettle项目发起人Matt Casters加入了Pentaho团队,成为Pentaho套件数据集成架构师;从此,Kettle成为企业级数据集成及商业智能套件Pentaho的主要组成部分,Kettle亦重命名为Pentaho Data Integration(PDI)。Pentaho公司于2015年被Hitachi Data Systems收购。(Hitachi Data Systems于2017年改名为Hitachi Vantara)
PDI以Java开发,支持跨平台运行,其特性包括:支持100%无编码、拖拽方式开发ETL数据管道;可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;支持ETL数据管道加入机器学习算法。
PDI分为商业版与开源版,开源版的截止2021年1月的累计下载量达836万,其中19%来自中国。在中国,一般人仍习惯把PDI的开源版称为Kettle。
二、Kettle的两种设计
- Transformation (转换) :完成针对数据的基础转换。
- Job (作业) :完成整个工作流的控制。
两者的主要区别如下:
- (1) 作业是步骤流,转换是数据流。这是作业和转换最大的区别。
- (2) 作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录、一条记录地流向最后的控件;
三、Kettle核心组件
名称 | 功能 |
Spoon.bat / spoon.sh(重点) | 通过图形接口,允许你通过图形界面来设计 ETL 转换过程(Transformation) |
Pan.bat / pan.sh | 运行转换的命令行工具 |
Kitchen.bat / kitchen.sh | 运行作业的命令行工具 |
Carte.bat / Carte.sh | Carte 是一个轻量级别的 Web 容器,用于建立专用、远程的 ETL Server |
四、安装与启动
官网各版本下载地址:Pentaho from Hitachi Vantara - Browse /Data Integration at SourceForge.net
Kettle是免安装的,解压即可使用,但Kettle是使用Java开发的,所以需要安装Java环境,解压之后,双击Spoon.bat即可运行,Linux则是Spoon.sh
五、使用
5.1 简单介绍
首先我们创建一个转换
然后可以看到有很多组件,其中我们最常用的主要是输入、输出、转换、脚本、查询等,下面我们着重介绍一下这几种常用的组件
5.2 输入
可以看到输入的组件非常多,这里标记了一下比较常用的组件,然后用Excel输入举个例子,首先把Excel输入拖到右边的工作区,浏览、添加文件
选择Excel内容如下
选择完文件之后,再选择工作表
选择完工作表之后,再选择字段
以上是Excel输入组件的基本使用
5.3 输出
输出的前提是需要有一个输入(文本文件、Excel、数据库等等),输出的组件会比输入要少一些,下面就用表输出举一个例子
与输入一样,把表输出组件拖到工作区中
既然是表输出,那么第一步我们肯定是需要建立数据库连接,连接的过程与一般的数据库管理工具一致,除此之外还有两个注意的,提交记录数量(默认为1000)和指定数据库字段,提交记录数量就不多提了,这里主要说一下数据库字段映射,也就是上图右边这部分,其实说白了就是建立输入与输出的映射关系,虽然这里的案例输入和输出的字段名都一样,但是实际的场景中肯定会遇到字段名不一样的情况,就可以使用映射的方式建立关联关系。
5.4 转换
输入是起点,输出是终点,转换是中间处理
转换的组件也非常多,而且很多都比较常用,比如去重、字符串操作、增加常量、字段选择等等,这里就以增加常量举例,场景就是在输入源上增加一个常量,或者说增加一个默认值
转换是种流式处理,一个接着一个连接即可
5.5 脚本
有时候现有的组件无法满足我们的定制化需求,这个时候就可以使用脚本来更灵活的实现我们的需求,脚本的功能很强大,很多组件也可以直接通过脚本实现