【Kettle】学习笔记

Kettle是一款纯Java编写的开源ETL工具,包含转换和作业两种设计,用于数据的抽取、转换和装载。转换处理数据流,作业则控制工作流。核心组件包括图形化界面Spoon、命令行工具Pan和Kitchen。文章还介绍了Kettle中的步骤、跳、元数据和数据类型,并提供了Kettle的调优策略,如调整JVM大小和提交记录数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

1.1、ETL简介

ETL(Extract-Transform-Load的缩写,即数据抽取转换装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。

市面上常用的ETL工具有很多,比如 Sqoop,DataX,Kettle,Talend 等

1.2、Kettle简介

1.2.1、Kettle

Kettle是一款国外开源的ETL工具,纯java编写

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle中文名称叫水壶,该项目把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle 中有两种脚本文件,transformation和 job,transformation完成针对数据的基础转换,job 则完成整个工作流的控制。

Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。

1.2.2、Kettle的两种设计

Transformation(转换):完成针对数据的基础转换。
在这里插入图片描述

Job(作业):完成整个工作流的控制。
在这里插入图片描述

区别:
(1)作业是步骤流,转换是数据流。这是作业和转换最大的区别。
(2)作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录、一条记录地流向最后的控件;

1.2.3、Kettle的核心组件

  1. 勺子(Spoon):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。
  2. 煎锅(Pan):利用Pan可以用命令行的形式执行由Spoon编辑的转换和作业
  3. 厨房(Kitchen):利用Kitchen可以使用命令行调用由Spoon编辑好的Job
  4. 菜单(Carte.bat/ Carte.sh): Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server。

二、安装部署

官网地址
下载地址
环境: JDK1.8

双击 Spoon.bat,启动图形化界面工具 慢很正常

三、Kettle核心概念

3.1、转换

转换(transaformation)负责数据的输入、转换、校验和输出等工作。

Kettle 中使用转换完成数据ETL全部工作。

转换由多个步骤(Step)组成,如文本文件输入,过滤输出行,执行SQL脚本等。

各个步骤使用跳(Hop)来链接。跳定义了一个数据流通道,即数据由一个步骤流(跳)向下一个步骤。

在Kettle 中数据的最小单位是数据行(row),数据流中流动其实是缓存的行集(RowSet)。

3.2、步骤(Step)

步骤(控件)是转换里的基本的组成部分

一个步骤有如下几个关键特性:

  1. 步骤需要有一个名字,这个名字在同一个转换范围内唯一
  2. 每个步骤都会读、写数据行(唯一例外是“生成记录”步骤,该步骤只写数据)。
  3. 步骤将数据写到与之相连的一个或多个输出跳(hop),再传送到跳的另一端的步骤。
  4. 大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为分发和复制,分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤。
    在这里插入图片描述

3.3、跳(Hop)

跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。
在这里插入图片描述
跳实际上是两个步骤之间的被称之为行集的数据行缓存,行集的大小可以在转换的设置里定义。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集空了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行。
在这里插入图片描述

3.4、元数据

每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。

通常包含下面一些信息:

  1. 名称:数据行里的字段名是唯一的。
  2. 数据类型:字段的数据类型。
  3. 格式:数据显示的方式,如 Integer 的#、0.00。

3.5、数据类型

数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合

字段包含下面几种数据类型:

  1. String:字符类型数据
  2. Number:双精度浮点数。
  3. Integer:带符号长整型(64位)。
  4. BigNumber:任意精度数据。
  5. Date:带毫秒精度的日期时间值。
  6. Boolean:取值为 true和 false的布尔值。
  7. Binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据。

四、Kettle调优

1、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本。
2、调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize: 1000~50000
3、尽量使用数据库连接池;
4、尽量提高批处理的commit size;
5、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);
6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle;
7、可以使用sgl来做的一些操作尽量sql;
8、插入大量数据的时候尽量把索引删掉;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值