Kettle:一款数据仓库ETL神器

文摘   2024-11-18 21:01   北京  

这次给大家介绍一个企业数据仓库中常用的开源 ETL 工具:Kettle。

Kettle 又名 Pentaho Data Integration,它是基于 Java 的开源数据集成平台,提供了图形化拖拽的方式设计数据抽取、转换和加载(ETL)过程。

Kettle 通常用于数据仓库、数据迁移、数据同步等应用场景,帮助用户从各种数据源中抽取数据,进行清洗和转换,然后加载到目标数据仓库或数据集市,支持后续的数据分析和机器学习。

下载安装

Pentaho Data Integration 提供了企业版和开发版(社区版),我们使用开发版。

方法一

百度网盘:https://pan.baidu.com/s/1SS4PQj8JQykKUJpEYE1xWA?pwd=2bm1

下载后直接解压 pdi-ce-10.2.0.0-222.zip 文件即可。

方法二

打开官方网站下载地址:https://pentaho.com/pentaho-developer-edition/


输入相关信息之后点击“DownloadNow”按钮,可能出现以下错误信息:

Could not verify the reCaptcha response.

这是因为它使用了 Google 的 reCaptcha 验证码服务,国内无法访问。解决办法就是安装一个浏览器插件 Gooreplacer,然后增加一个重定向配置规则。

匹配模式:www.google.com/recaptcha

目标地址:recaptcha.net/recaptcha


然后刷新下载页面,通过人机身份验证,同意使用协议后可以看到一个下载列表:


选择客户端工具 pdi-ce-xxx.zip 进行下载,下载后直接解压 zip 文件即可。

简单使用

Kettle 基于 Java 开发,支持 Windows、Linux 以及 macOS 多种操作系统,我们需要提前安装 Java 运行环境,在命令行中输入“java -version”验证安装版本:

PS C:\Users\bell-> java -version

java version "22.0.2" 2024-07-16
Java(TM) SE Runtime Environment (build 22.0.2+9-70)
Java HotSpot(TM) 64-Bit Server VM (build 22.0.2+9-70, mixed mode, sharing)

Kettle 安装包中提供了多个组件,其中主要的 4 个组件如下:

  • SPOON(Spoon.bat 或者 spoon.sh),提供图形界面来设计 ETL 任务,最常使用。

  • KITCHEN(Kitchen.bat 或者 kitchen.sh),通过命令行方式调用 SPOON 设计的作业(Job);

  • PAN(Pan.bat 或者 pan.sh),通过命令行方式调用 SPOON 设计的转换(Transformation);

  • CARTE(Carte.bat 或者 carte.sh),一个 Web 服务,用于远程执行 ETL 任务。


下面我们介绍一个 SPOON 使用案例,读取数据库中的表,写入 Excel 文件。

首先,点击 Spoon.bat(Windows)或者 spoon.sh(Linux)或者 spoon.command(macOS)脚本运行 SPOON:



默认打开的是欢迎页面。

Kettle 工作流中的对象可以分为两类:转换(Transformation)和作业(Job)。

转换用于定义各种数据处理操作,可以包含多个步骤(Step),这些步骤通过跳跃(Hop)的方式连接,共同完成对数据的输入、转换处理和输出等工作。

转换以并行方式执行,所有步骤同时启动,从输入跳中读取数据行,然后把处理过的数据写到输出跳;直到输入跳里不再有数据流,步骤的运行才会终止。当所有的步骤都终止了,整个转换也就完成了。

作业用于定义一个完成整个工作流的控制,可以包含多个作业项(Job Entry),作业项可以是转换、邮件发送、数据库连接等操作。这些作业项以某种顺序执行,共同完成一个复杂的任务。

作业以串行方式执行,作业项的执行顺序由作业项之间的跳跃和每个作业项的执行结果来决定。作业项之间不是通过数据流来传递数据,而是通过结果对象(Result Object)来传递。这个结果对象包含了数据行等信息,但不是以数据流的方式传递的,而是等待一个作业项执行完了,再传递给下一个作业项。

我们点击“文件”->“新建”-“转换”,新建一个转换。

然后在左侧“核心对象”中点击“输入”列表中的“表输入”对象,拖拽到页面中间。



为了读取数据库中的表,我们需要建立一个数据库连接。点击“文件”->“新建”->“数据库”,打开数据库配置页面。



选择数据库类型和连接方式,输入主机名称、数据库名称、端口号、用户名以及密码,点击“测试”按钮确认能够成功连接数据库。

如果提示找不到数据库驱动(Driver class xxx could not be found),需要下载对应数据库的 JDBC 驱动,存储到 Kettle 安装目录下的 lib 子目录中。

创建数据库连接对象之后,双击“表输入”对象,选择“数据库连接”,手动输入 SQL 查询或者通过“获取SQL查询语句”按钮生成查询。



此时,点击“预览”可以查看读取的数据示例。

点击“确认”按钮保存设置。

接下来在左侧“核心对象”中点击“输出”列表中的“Microsoft Excel writer”对象,拖拽到页面中间。然后将鼠标放在“表输入”对象上,在页面会显示一些针对这个对象的操作,其中有一个向右的箭头,点击可以将其连接到“Microsoft Excel writer”对象,也就是建立两个步骤之间的跳跃。



双击“Microsoft Excel writer”对象进行文件配置,输入包含路径的文件名和扩展名。



也可以根据需要设置其他内容,包容文件名增加日期时间信息、设置工作表(Worksheet)、使用模板文件以及字段格式等内容。点击“确认”按钮保存设置。

点击“F9”或者“运行”按钮执行这个转换操作,页面下方的日志显示了执行信息,Preview data 可以预览每个步骤输出的数据。

执行完成之后,打开输出的 Excel 文件可以看到导出的数据。

至此,我们完成了一个简单的转换,从数据库中读取数据并写入 Excel 文件。

后续我们再分享更多案例。

SQL编程思想
专注于数据库领域和SQL编程知识的分享。
 最新文章