kettle使用

459 阅读4分钟

1.kettle概述

1.1 什么是kettle。

kettle是一款功能强大的ETL工具。提供可视化图形界面,可通过配置的方式完成各类数据操作;同时提供定时任务功能。kettle为纯java编写,支持跨平台使用。

备注:ETL即为数据抽取,转换,装载。也就是我们常说的数据清洗。

1.2 kettle的核心元素

kettle有两大核心元素:转换(transformation),作业(job)

转换用来完成数据的基础转换。作业配置定时任务,用来完成对整个工作流的控制。简单来说,转换是数据流,作业是步骤流。

1.3 kettle工程的存储方式

1)以xml形式存储,转换为ktr类型,作业为kjb类型。 2)以资源库方式存储(数据库资源库和文件资源库)

1.4 kettle组成

1)spoon,提供一个图形化界面 2)pan,以命令行的形式调用转换 3)kitchen,以命令行的形式调用job 4)carte,轻量级的web容器,用于建立专用,远程的ETL服务。

2 kettle安装及使用

2.1 kettle下载

下载地址:sourceforge.net/projects/pe… kettle无需安装,下载解压即可使用。

2.2 kettle使用

2.2.1 控件简介

kettle控件分为steps(步骤)和hops(节点连接)两大类通过配置步骤,使用节点连接连接各步骤完成一整个数据流的操作。

2.2.2 新建转换

image.png

2.2.3 输入输出

输入为数据流入口,输出为数据流出口。输入和输出可以完成一个简单的数据抽取工作。

2.2.4 数据库连接

数据库连接可以连接各类数据库,支持包括oracle,mysql,sqlserver等各类数据库。同时也支持jndi,jdbc多种连接方式。

image.png

2.2.5 完成转换配置

配置完数据库连接后,即可对数据库进行抽取和写入。

image.png

2.2.6 新建作业

作业核心组件为start,成功,转换,作业等。start为作业起点可配置定时任务的规则,成功则表示作业执行结束。转换、作业可配置执行的转换与作业。

2.2.7 定时任务配置

image.png

2.2.8 执行结果查看

image.png

2.2.9 错误排查

kettle提供详细日志及调试模式,一般可根据日志及调试结果定位到问题。常见问题多为数据库连接异常,sql语句错误,字段长度及类型错误等。根据日志信息进行调整即可。 另外需注意的是,乱码等问题kettle不会有错误提示,所以每次执行完需进行结果确认。

2.3 常用组件

2.3.1 脚本执行组件

kettle提供java脚本,JavaScript脚本,sql脚本等多种脚本执行,可在数据转换或事务处理中进行灵活使用。

2.3.2 转换组件

转换组件主要用于数据转换,可进行列转行,去重,行专列等操作,同时提供了大量的字符串操作组件。

2.3.3 查询组件

查询组件主要用于接口查询,数据库查询等查询操作。

2.3.4 流程组件

流程组件可用于数据流操作。

2.4 资源库

资源库分为数据库资源库与文件资源库。资源库与普通文件存储的区别在于,资源库对脚本进行了统一管理,同时数据库资源库便于远程开发,多人协作开发等。

2.4.1 新建资源库

image.png

点击connect,选择repository manager,进入资源库管理界面,点击add,选择资源库类型。进行资源库配置。 配置界面如下图所示:

image.png

数据库资源库在配置时,还需先配置资源库所在数据库。配置完成后kettle会自动完成表的创建。

2.4.2 连接资源库

image.png

创建完资源库后可连接该资源库,用户名密码默认为admin/admin

2.4.3 探索资源库

image.png

2.5 其他补充

全量同步和增量同步

首先我们需要明确我们的同步目的,如果用于基础数据备份,数据量小,且不要求实时性。那我们可以选择定时全量同步。如果用于业务数据同步,数据量大且实时性要求高,那我们可以选择增量同步。

全量同步与增量同步的区别:

1)同步方式

全量同步是在同步时,采用全表覆盖更新的方式进行同步。

增量同步是在同步时,根据checkpoint(时间戳或字段标识)来判断同步哪些数据。

2)数据

全量同步时只需要拉取数据即可,无需对数据进行筛选。

增量同步需根据checkpoint进行筛选,那么这就需要记录或知道哪些数据执行过更新操作。

2.6 学习参考

在服务器10.11.3.126上的数据库资源库,有一些已完成的kettle脚本,大家可以作为学习参考。