ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。(数据仓库结构)通俗的说法就是从数据源抽取数据出来,进行清洗加工转换,然后加载到定义好的数据仓库模型中去。
ETL的目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节,其设计的好坏影响生成数据的质量,直接关系到BI项目的成败。
用ETL工具就可以解决。它的优点有:
-
支持多种异构数据源的连接。(部分)
-
图形化的界面操作十分方便。
-
处理海量数据速度快、流程更清晰等。
我们常用的 ETL 工具有Sqoop、Kettle、Nifi:
- Kettle虽然功能较完善,但当处理大数据量的时候瓶颈问题比较突出;
- NiFi的功能强大,且支持大数据量操作,但NiFi集群是独立于Hadoop集群的,需要独立的服务器来支撑,强大也就意味着有上手门槛,学习难度大,用人成本高;
- Sqoop专为关系型数据库和Hadoop之间的ETL而生,支持海量数据,符合项目的需求,且操作简单门槛低。
Sqoop与Kettle比较
- 如果需求只是将关系型数据库数据(Oracle、MySQL)迁移至非关系型数据库(HDFS、Hbase、Hive),推荐使用Sqoop工具,足够满足需求
- 如果是将不同种类的关系型数据库(Oracle、MySQL、SQL server)整合到同一个关系型数据库中,如MySQL。推荐使用Kettle,有GUI界面操作简单。
一、Kettle简介
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。
1、Kettle概念模型
Kettle的执行分为两个层次(2种脚本):Job(作业)和Transformation(转换)。
2、kettle的核心组件
3、Kettle的结构
- Spoon:是构建ETL Jobs和Transformations的工具。Spoon以拖拽的方式图形化设计,能够通过spoon调用专用的数据集成引擎或者集群。
- Data Integration Server:是一个专用的ETL Server,它的主要功能有:
二、Kettle下载
下载网址:https://community.hitachivantara.com/s/article/data-integration-kettle
1、Kettle目录文件
classes:生命周期监听、注册表扩展、日志的配置文件
Data Integration.app:数据集成应用
Data Service JDBC Driver: JDBC驱动程序的数据服务
docs:文档
launcher:Kettle的启动配置
lib:支持库 jar包
libswt:Kettle图形库jar
plugins:插件
pwd:kettle集群配置文件
samples:自带例子
simple-jndi:jndi连接配置
system:系统目录
ui:软件界面
Carte.bat/Carte.sh:启动集群命令
Encr.bat/encr.sh:kettle提供的加密算法
Import.bat/import.sh:导入命令
Kitchen.bat/kitchen:运行Job的命令
Pan.bat/pan.sh:运行转换的命令
三、Kettle部署
1、安装JDK
由于Kettle是Java语言开发的,该软件的允许需要Java运行环境的依赖。
需要先安装JDK,准备好Java软件的运行环境。
2、配置环境变量
JAVA_HOME:JDK的安装目录
KETTLE_HOME:kettle的解压目录
3、运行Spoon
四、Kettle界面简介
五、Kettle快速体验:把数据从CSV文件复制到Excel文件
kettle数据流结构图 |
---|
把数据从CSV文件(ketttle测试数据\用户数据源\user.csv)抽取到Excel文件
数据源:
id | name | age | gender | province | city | region | phone | birthday | hobby | 注册时间 |
---|---|---|---|---|---|---|---|---|---|---|
392456197008193000 | 张三 | 20 | 0 | 北京市 | 昌平区 | 回龙观 | 18589407692 | 1970-08-19 | 美食;篮球;足球 | 2018-08-06 09:44:43 |
267456198006210000 | 李四 | 25 | 1 | 河南省 | 郑州市 | 郑东新区 | 18681109672 | 1980-06-21 | 音乐;阅读;旅游 | 2017-04-07 09:14:13 |
892456199007203000 | 王五 | 24 | 1 | 湖北省 | 武汉市 | 汉阳区 | 18798009102 | 1990-07-20 | 写代码;读代码;算法 | 2016-06-08 07:34:23 |
492456198712198000 | 赵六 | 26 | 2 | 陕西省 | 西安市 | 莲湖区 | 18189189195 | 1987-12-19 | 购物;旅游 | 2016-01-09 19:15:53 |
392456197008193000 | 张三 | 20 | 0 | 北京市 | 昌平区 | 回龙观 | 18589407692 | 1970-08-19 | 美食;篮球;足球 | 2018-08-06 09:44:43 |
392456197008193000 | 张三 | 20 | 0 | 北京市 | 昌平区 | 回龙观 | 18589407692 | 1970-08-19 | 美食;篮球;足球 | 2018-08-06 09:44:43 |
实现步骤:
1、在Kettle中新建转换
2、拖拽一个CSV输入组件、一个Excel输出组件、并按住Shift拖动鼠标连接两个组件
3、配置CSV输入组件、Excel输出组件
1、新建转换
新建转换 |
---|
2、转换控件
拖拽一个CSV输入组件、一个Excel输出组件、并按住Shift拖动鼠标连接两个组件
组件架构图 |
---|
3、配置CSV输入组件
- 选择要进行导入的CSV数据源
- 点击 「获取字段」,读取CSV中的列
- 点击 「预览」,浏览CSV中的数据
4、配置Excel组件
指定输出Excel文件的位置 |
---|
5、运行
点击 三角形 箭头执行
执行 |
---|
6、执行结果
6.1 日志
6.2 步骤度量
6.3 Metrics
6.4 Preview data
六、Kettle核心概念
Kettle可以被归类为可视化编程语言(Visula Programming Languages,VPL),因为Kettle可以使用图形化的方式定义复杂的ETL程序和工作流。
Kettle里的图就是转换和作业。
可视化编程一直是Kettle里的核心概念,它可以让你快速构建复杂的ETL作业和减低维护工作量。它通过隐藏很多技术细节,使IT领域更贴近于商务领域。
1、转换
转换(transaformation)是ETL解决方案中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。
转换包含一个或多个步骤(step),如读取文件、过滤数据行、数据清洗或将数据加载到数据库。
转换里的步骤通过跳(hop)来连接,跳定义一个单向通道,允许数据从一个步骤向另一个步骤流动。
在Kettle里,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动。
数据流有的时候也被称之为记录流。
2、Step步骤
步骤(控件)是转换里的基本的组成部分。
快速入门的案例中就存在两个步骤,“CSV文件输入”和“Excel输出”。
一个步骤有如下几个关键特性:
①步骤需要有一个名字,这个名字在转换范围内唯一。
②每个步骤都会读、写数据行(唯一例外是“生成记录”步骤,该步骤只写数据)。
③步骤将数据写到与之相连的一个或多个输出跳,再传送到跳的另一端的步骤。
④大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被被设置为分发和复制,分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤。
3、Hop跳
跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。
跳实际上是两个步骤之间的被称之为行集的数据行缓存(行集的大小可以在转换的设置里定义)。
当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。
当行集空了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行。