===========================================================================
ETL (Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。
市面上常用的ETL工具有很多,比如Sqoop,DataX, Kettle, Talend 等,作为一个大数据工程师,我们最好要掌握其中的两到三种,这里我们要学习的ETL工具是Kettle!
==============================================================================
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、 Unix.上运行,绿色无需安装,数据抽取高效稳定。
Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle(现在已经更名为PDI, Pentaho Data Integration Pentaho数据集成)
简述:
-
Transformation (转换) :完成针对数据的基础转换。
-
Job (作业) :完成整个工作流的控制。
区别:
-
(1) 作业是步骤流,转换是数据流。这是作业和转换最大的区别。
-
(2)作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录、一条记录地流向最后的控件;
-
Spoon.bat / spoon.sh(重点):是一个图形化界面,可以让我们用图形化的方式开发转换和作业(Windows选择Spoon.bat;Linux选择Spoon.sh)
-
Pan.bat / pan.sh:利用Pan可以用命令行的形式执行由Spoon编辑的转换和作业
-
Kitchen.bat / kitchen.sh:利用Kitchen可以使用命令调用由Spoon编辑好的Job
-
Carte.bat / Carte.sh:Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server
================================================================================
2.1.1 下载地址
官网:官网地址
下载地址:各版本下载链接
百度网盘:百度网盘地址 ,提取码:beeo
2.1.2 Kettle目录说明
2.1.2 Kettle 文件说明
2.2.1 概述
在实际企业开发中,都是在本地Windows环境下进行 kettle 的 job 和 Transformation 开发的,可以在本地运行,也可以连接远程机器运行
2.2.2 安装
1)安装 jdk,版本建议1.8及以上
2)下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可
3)双击Spoon.bat,启动图形化界面工具,就可以直接使用了
2.3.1 主界面
2.3.2 转换
2.3.3 作业
体验案例:将 csv 文件用 Kettle 转换成 excel 文件
1)在 Kettle 中新建一个转换,然后选择转换下面的 “csv文件输入” 和 “excel文件输出” 拖至工作区
2)双击CSV文件输入文件控件,在弹出的设置框里找到对应的csv文件(test.csv).然后点击下面的获取字段按钮,将我需要的字段加载到kettle中
3)按住键盘 shift 键,并且点击鼠标左键将两个控件链接起来,链接时选择 “主输出步骤”
4)双击Excel输出控件,在弹出的设置框里设置文件输出路径和文件名称,然后点击上的字段框,依次点击下面的获取字段和最小宽度,获取到输出字段
5)点击运行,启动,查看转换好的文件
转换成功:
2.5.1 可视化编程
Kettle可以被归类为可视化编程语言,因为Kettle可以使用图形化的方式定义复杂的ETL程序和工作流。
可视化编程一直是Kettle里的核心概念,它可以让你快速构建复杂的ETL作业和减低维护工作量。它通过隐藏很多技术细节,使IT领域更贴近于商务领域。
Kettle里的代码就是转换和作业。
2.5.2 转换
转换(transaformation)负责数据的输入、转换、校验和输出等工作。Kettle 中使用转换完成数据 ETL 全部工作。转换由多个步骤(Step)组成,如文本文件输入,过滤输出行,执行SQL脚本等。各个步骤使用跳(Hop)(连接箭头) 来链接。跳定义了一个数据流通道,即数据由一个步骤流(跳)向下一个步骤。在 Kettle中数据的最小单位是数据行(row),数据流中流动其实是缓存的行集(RowSet)
2.5.3 步骤
步骤(控件)是转换里的基本的组成部分,快速入「]的案例中就存在两个步骤,“CSV文件输入” 和 “Excel输出”。
一个步骤有如下几个关键特性:
-
1.步骤需要有一个名字,这个名字在同一个转换范围内唯一
-
2.每个步骤都会读、写数据行(唯一例外是 “生成记录”步骤,该步骤只写数据
-
3.步骤将数据写到与之相连的一个或多个输出跳(hop),再传送到跳的另一端的步骤。
-
4.大多数的步骤都可以有多个输出跳。–个步骤的数据发送可以被设置为分发和复制,
分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤
2.5.4 跳(Hop)
跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路