第1章 Kettle概述
1.1 ETL简介
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。
市面上常用的ETL工具有很多,比如Sqoop,DataX,Kettle,Talend等,作为一个大数据工程师,我们最好要掌握其中的两到三种,这里我们要学习的ETL工具是Kettle!
1.2 Kettle简介
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。
1.Kettle 输入控件
- CSV文件输入
- 文本文件输入
- Excel输入
- XML输入
- JSON输入
- 表输入
2.Kettle 输出控件
- Excel输出
- 文本文件输出
- SQL文件输出
- 表输出
- 更新&插入/更新
- 删除
3.Kettle 转换控件
3.1 kettle的转换控件,是ETL里面的T(Transform),主要工作是进行数据转换,数据清洗。
3.2 ETL整个过程中,Transform的工作量最大,耗时也久,约整个ETL的2/3。
3.3 Kettle的常用转换控件有:
- 1 Concat fields
- 2.值映射
- 3.列拆分
- 4.列转行
- 5.剪切字符串
- 6.去除重复记录
- 7.唯一行(哈希值)
- 8.增加常量
- 9.增加序列
- 10.字段选择
- 11.字符串操作
- 12.字符串替换
- 13.拆分字段
- 14.排序记录
- 15.行扁平化
- 16.行转列
- 17.计算器
3.1 Concat Fileds(拼接字段)
转换控件Concat fields,顾名思义,就是将多个字段连接起来形成一个新的字段。
练习:将staff表的firstname和lastname拼接起来,形成name字段,然后再将数据插入到新表emp中
3.2 值映射(把字段一个值映射成其他值)
本章节任务:将staff表的sex字段,映射成男or女,然后再插入到emp表中
3.3 增加常量&增加序列(给数据流加一列相同值&加一列序列)
3.4 字段选择(从数据流选择字段、改变名称,类型)
3.5 计算器 (通过函数集合创建新的字段)
3.6 字符串剪切&替换&操作
剪切字符串是指定输入流字段裁剪的位置剪切出新的字段。
字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成新字段。
字符串操作是去除字符串两端的空格和大小写切换,并生成新的字段。
3.7 排序记录&去除重复记录
去除重复记录是去除数据流里面相同的数据行。但是此控件使用之前要求必须先对数据进行排序,对数据排序用的控件是排序记录,排序记录控件可以按照指定字段的升序或者降序对数据流进行排序。因此排序记录+去除重复记录控件常常配合组队使用。
3.8 唯一行(哈希值)
唯一行(哈希值)就是删除数据流重复的行。此控件的效果和(排序记录+去除重复记录)的效果是一样的,但是实现的原理不同。排序记录+去除重复记录对比的是每两行之间的数据,而唯一行(哈希值)是给每一行的数据建立哈希值,通过哈希值来比较数据是否重复,因此唯一行(哈希值)去重效率比较高,也更建议大家使用。
3.9 拆分字段
拆分字段是把字段按照分隔符拆分成两个或多个字段。需要注意的是,字段拆分以后,原字段就会从数据流中消失。
3.10 列拆分为多行
列拆分为多行就是把指定字段按指定分隔符进行拆分为多行,然后其他字段直接复制。
3.11 行扁平化
行扁平化就是把同一组的多行数据合并成为一行,可以理解为列拆分为多行的逆向操作。
3.12 列转行(顾名思义)
列转行,顾名思义多列转一行,就是如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容变成不同的列,然后把多行数据转换为一行数据的过程。
3.13 行转列
行转列,一行转多列,就是把数据字段的字段名转换为一列,把数据行变为数据列。我们也可以简单理解为行转列控件是列转行控件的逆向操作。
4 Kettle应用控件
- 替换NULL值
- 写日志
5 Kettle流程控件
- Switch/case
- 过滤记录
- 空操作
- 中止
6 Kettle查询控件
- 数据库查询
- 流查询
7 Kettle连接控件
- 合并记录
- 记录集连接
8 Kettle统计控件
- 分组
9 Kettle映射控件
- 映射
10 Kettle脚本控件
- 执行SQL脚本