目录

一、Kettle是什么

二、Kettle的两种设计

三、Kettle核心组件

四、安装与启动

五、使用

5.1 简单介绍

5.2 输入

5.3 输出

5.4 转换

5.5 脚本


一、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)

 PDIJava开发,支持跨平台运行,其特性包括:支持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即可运行

kettle rest client在哪 kettle stand_数据库

五、使用

5.1 简单介绍

首先我们创建一个转换

kettle rest client在哪 kettle stand_控件_02

然后可以看到有很多组件,其中我们最常用的主要是输入、输出、转换、脚本、查询等,下面我们着重介绍一下这几种常用的组件

kettle rest client在哪 kettle stand_控件_03

5.2 输入

kettle rest client在哪 kettle stand_etl_04

可以看到输入的组件非常多,这里标记了一下比较常用的组件,然后用Excel输入举个例子,首先把Excel输入拖到右边的工作区,浏览、添加文件

kettle rest client在哪 kettle stand_字段_05

选择Excel内容如下

kettle rest client在哪 kettle stand_etl_06

选择完文件之后,再选择工作表

kettle rest client在哪 kettle stand_控件_07

选择完工作表之后,再选择字段

kettle rest client在哪 kettle stand_控件_08

以上是Excel输入组件的基本使用

5.3 输出

输出的前提是需要有一个输入(文本文件、Excel、数据库等等),输出的组件会比输入要少一些,下面就用表输出举一个例子

kettle rest client在哪 kettle stand_字段_09

与输入一样,把表输出组件拖到工作区中

kettle rest client在哪 kettle stand_数据库_10

kettle rest client在哪 kettle stand_控件_11

既然是表输出,那么第一步我们肯定是需要建立数据库连接,连接的过程与一般的数据库管理工具一致,除此之外还有两个注意的,提交记录数量(默认为1000)和指定数据库字段,提交记录数量就不多提了,这里主要说一下数据库字段映射,也就是上图右边这部分,其实说白了就是建立输入与输出的映射关系,虽然这里的案例输入和输出的字段名都一样,但是实际的场景中肯定会遇到字段名不一样的情况,就可以使用映射的方式建立关联关系。

5.4 转换

输入是起点,输出是终点,转换是中间处理

kettle rest client在哪 kettle stand_控件_12

转换的组件也非常多,而且很多都比较常用,比如去重、字符串操作、增加常量、字段选择等等,这里就以增加常量举例,场景就是在输入源上增加一个常量,或者说增加一个默认值

kettle rest client在哪 kettle stand_字段_13

转换是种流式处理,一个接着一个连接即可

5.5 脚本

kettle rest client在哪 kettle stand_数据库_14

有时候现有的组件无法满足我们的定制化需求,这个时候就可以使用脚本来更灵活的实现我们的需求,脚本的功能很强大,很多组件也可以直接通过脚本实现