> 文章列表 > 【Kettle】学习笔记

【Kettle】学习笔记

【Kettle】学习笔记

学习笔记

  • 一、简介
    • 1.1、ETL简介
    • 1.2、Kettle简介
      • 1.2.1、Kettle
      • 1.2.2、Kettle的两种设计
      • 1.2.3、Kettle的核心组件
  • 二、安装部署
  • 三、Kettle核心概念
    • 3.1、转换
    • 3.2、步骤(Step)
    • 3.3、跳(Hop)
    • 3.4、元数据
    • 3.5、数据类型
  • 四、Kettle调优

一、简介

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(转换):完成针对数据的基础转换。
【Kettle】学习笔记

Job(作业):完成整个工作流的控制。
【Kettle】学习笔记

区别:
(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. 大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为分发和复制,分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤。
    【Kettle】学习笔记

3.3、跳(Hop)

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

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、插入大量数据的时候尽量把索引删掉;