0.ETL简介
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
ETL包含了三方面:
抽取:将数据从各种原始的业务系统中读取出来,这是所有工作的前提。
转换:按照预先设计好的规则将抽取得数据进行转换,使本来异构的数据格式能统一起来。
装载:将转换完的数据按计划增量或全部导入到数据仓库中。
0.1.ETL与Kettle的关系
Kettle 是一种可以用来做ETL操作的开源工具
还有一些其他的ETL工具:
- DataStage:这是IBM为其配套的DB2开发的ETL工具,也可以用于其它数据库数据的集成 Informatica
- PowerCenter:可用于访问和集成几乎任何业务系统、任何格式的数据,它可以按任意速度在企业内交付数据,具有高性能、高可扩展性、高可用性的特点
1.Kettle简介
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
1.1.Kettle与Pentaho、PDI的关系
PDI 的全称是Pentaho Data Integeration,Kettle 是 PDI 以前的名称
Kettle 的主作者是 Matt ,他在 2003 年就开始了这个项目,在 PDI 的代码里就可以看到最早的日期大概在2003年4月。 从版本2.2开始, Kettle 项目进入了开源领域,并遵守 LGPL 协议。
在 2006年 Kettle 加入了开源的 BI 组织 Pentaho, 正式命名为PDI, 加入Pentaho 后Kettle 的发展越来越快了,并有越来越多的人开始关注它了。
2. Kettle中的基本概念
Kettle中有两种脚本文件,transformation和job
- transformation完成针对数据的基础转换
- job则完成整个工作流的控制
3. Kettle的安装
- 配置好jdk环境变量
- 下载kettle后解压到任意路径即可使用
- 启动:
transformation/job图形化设计工具的启动:
Windows下双击spoon.bat启动
Linux下运行spoon.sh脚本启动
3.1.修改启动JVM参数
如果运行时发现内存溢出,可以参照如下方法修改JVM启动参数:
Windows下修改Spoon.bat文件
Linux下修改spoon.sh文件:
找到下面一行内容
PENTAHO_DI_JAVA_OPTIONS="-Xmx512m -XX:MaxPermSize=256m"
将Xmx512m中的512改为一个更大的数字。
4. Kettle模块介绍
Kettle包括三大模块:
- Spoon——转换/工作(transform/job)设计工具 (GUI方式)
- Kitchen——工作(job)执行器 (命令行方式)
- Pan——转换(trasform)执行器 (命令行方式)
5. Kettle组件介绍
- 创建一个新的transformation,kettle默认transformation文件保存后后缀名为ktr
- 创建一个新的job,kettle默认job文件保存后后缀名为kjb
5.1. Kettle组件介绍——Transformation组件树介绍
Transformation中的节点介绍如下:
- Main Tree:菜单列出的是一个transformation中基本的属性,可以通过各个节点来查看。
- DB连接:显示当前transformation中的数据库连接,每一个transformation的数据库连接都需要单独配置。
- Steps:一个transformation中应用到的环节列表
- Hops:一个transformation中应用到的节点连接列表
核心对象菜单列出的是transformation中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加: - Input:输入环节
- Output:输出环节
- Lookup:查询环节
- Transform:转化环节
- Joins:连接环节
- Scripting:脚本环节
5.2. Kettle组件介绍——Job组件树介绍
Job中的节点介绍如下:
- Main Tree:列出的是一个Job中基本的属性,可以通过各个节点来查看。
DB连接:显示当前Job中的数据库连接,每一个Job的数据库连接都需要单独配置。 - Job entries/作业项目:一个Job中引用的环节列表
核心对象菜单列出的是Job中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加。
每一个环节可以通过鼠标拖动来将环节添加到主窗口中。
并可通过shift+鼠标拖动,实现环节之间的连接。
6. Kettle使用举例
- 1.将数据库数据导入到文本文件中->db2text.ktr
- 2.将文本文件中的数据导入到数据库中->text2db.ktr
- 3.将数据从一个数据库表导入到另一个数据库表中 table2Table.ktr/table2Table.kjb
- 4.从ftp下载文件到本地,再将该文件上传到hdfs ->ftp2Local2Hdfs.kjb
- 5.将本地文件上传到ftp->local2Ftp.kjb
- 简单案例的github地址:https://github.com/ychenchen/kettle.git
7. Kettle使用举例——串行/并行
- 串行:一个节点操作失败,后面的节点将不再继续执行
并行:从一个节点分开后多分支执行,每条分支的执行结果不影响其他分支,分支合并后的节点也会多次执行,即所有执行成功的分支都会执行合并后的节点
在spoon中演示并查看并行执行结果->parallel.kjb
8. Pan命令和kitchen命令演示
- 演示使用Pan命令执行transformation
pan.sh -file db2text.ktr
- 演示使用kitchen命令执行job
kitchen.sh -file local2Ftp.kjb
-
查看日志文件
将日志文件重定向到文本文件中
pan.sh -file db2text.ktr >log.log
kitchen.sh -file local2Ftp.kjb >log.log