01-PDI(Kettle)简介与安装
最好的学习资料就是官网,附上官网文档地址:
PDI官方文档地址
PDI(Kettle)简介
Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,目前最新稳定版为9.2。
2005年12月,Kettle从2.1版本开始进入了开源领域,一直到4.1版本遵守LGPL协议,从4.2版本开始遵守Apache Licence 2.0协议。
开源协议区别可参考如下博客:
https://blog.csdn.net/qwertyuiop_123abc/article/details/82110221
也可参考如下图片(阮一峰创作):
为什么标题为PDI(Kettle)简介与安装呢,这是因为 Kettle在2006年初加入了开源的BI公司Pentaho, 正式命名为:Pentaho Data Integeration,简称“PDI”。 自2017年9月20日起,Pentaho已经被合并于日立集团下的新公司: Hitachi Vantara。
Kettle可以简化数据仓库的创建,更新和维护,使用Kettle可以构建一套开源的ETL解决方案。
Kettle的组成
Spoon.bat/sh: 勺子 :图形化界面,可以用图形化的方式开发transform和job Pan.bat/sh:煎锅 ,利用Pan调用transform kitchen.bat/sh:厨房,利用ktichen命令来调用job Carte.bat/sh: 菜单,用来构建web集群服务
Kettle安装
- 下载地址:
https://sourceforge.net/projects/pentaho/
进入后点击file,然后选择对应的版本即可。
选择对应的版本后,可以选择不同的Kettle版本(客户端或服务端),一般可使用client-tools版本(可本地安装后直接运行)即可。
本博客下载的版本为8.2版本,具体下载地址为:
https://sourceforge.net/projects/pentaho/files/Pentaho%208.2/client-tools/
选择下载量最多的pdi-ce-8.2.0.0-342.zip,单击即可下载。
下载完成,将压缩包解压,解压完成,只要电脑有jdk1.8环境,即可直接使用,本博客的安装目录:
E:\pdi-ce-8.2.0.0-342\data-integration\
目录结构
3. 启动测试:
在E:\pdi-ce-8.2.0.0-342\data-integration\目录下双击Spoon.bat即可打开Kettle的可视化编程界面
- 为了便于下次使用,可以将Spoon.bat创建快捷方式,同时右键该快捷方式–更改图标–浏览–选择安装目录–选择spoon.ico点击确定
Kettle核心知识点
kettle的两种设计模型
transformation转换:完成针对数据的基础转换。转换负责数据的输入、转换、校验和输出等工作,kettle中使用转换完成数据ETL的全部工作,转换由多个步骤Step组成。各个步骤由跳hop链接。跳定义了一个数据流通道,即数据由一个步骤流(跳)向下一个步骤。在Kettle中数据的最小单位是数据行(row),数据流中流动的是缓存的行集(rowset)。
Job作业:完成整个工作流的控制
区别:
作业是步骤流(一般为串行),转换是数据流(并行)
作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有的控件全部启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录,一条记录的流向最后的控件。
步骤step
一个步骤有如下几个关键特性:
步骤需要名字,名字在同一个转换范围内唯一
每个步骤都会读写数据行,唯一例外是“生成记录”步骤
步骤将数据写到与之相连的一个或多个输出跳hop,再传到到跳的另一端的步骤
大多数的步骤都可以由多个输出跳,一个步骤的数据发送可以被设置为分发和复制。分发是目标步骤轮流接受数据,复制为同时接受数据。一个步骤连接两个步骤时,会提示选择分发还是复制。
- 跳hop
- 跳是步骤之间带箭头的连线,跳定义了步骤之间的数据通道
- 跳实际上是两个步骤之间的被称为行集的数据行缓存。行集的大小可以在转换的设置里定义。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间,当行集空了,从行集读取数据的步骤停止读取,直到行集了又有了可选的数据行。在转换的空白处双击,会弹出转换属性
元数据
每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。通常包含如下信息。
名称:数据行里的字段名是唯一的
数据类型:字段的数据类型。
格式:数据显示的方式,如Integer的#,0.00
长度:
精度
货币符号
小数点符号
分组符号
并行
跳的这种基于行缓存的规则,允许每个步骤都由一个独立的线程运行,这样并发程度最高。这一规则也允许数据以最小消耗内存的数据流的方式来处理。在数据仓库里,我们经常需要处理大量数据,这种高并发低消耗的方式也是ETL工具的核心需求。
对于kettle的转换,不能定义一个执行顺序,因为所有的步骤都是并发方式执行;当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并发处理过的数据写出到输出跳,直到输出跳里不再有数据,就中止步骤的运行,当所有的步骤都中止了,整个转换就中止了。
如果一个任务要沿着指定的顺序执行,就需要使用到作业了。
作业
作业,负责定义一个完成整个工作流的控制,比如将转换的结果发送邮件给相关人员,因为转换以并行方式执行,所以必须存在一个串行的调度工具来执行转换,这就是Kettle中的作业。
注释
在spoon界面,空白处右键 选择new note可以添加注释用于辅助理解整个ETL过程。
Kettle配置
修改语言 tools – options – look feel – preferred language
修改字体 tools – options – look feel – Font on Workspace
Kettle文件存储方式:
文件后缀:
转换文件后缀为ktr
工作文件后缀为kjb
存储方式:
以XML形式存储(本地文件)
以资源库的方式存储(数据库和文件)