来源:微信公众号 - DD程序鹅
原文:https://mp.weixin.qq.com/s/BVoJ7BlwPqmijKt4oDGPqw
版权声明:本文为博主原创文章,转载请附上原文链接!
更多系列公众号搜索: DD程序鹅 ,提前查阅。
上篇介绍了Kettle下载与安装部署,相信大家的好奇心已经安装好,并试着玩了玩。到底如何使用呢?在使用g工具之前一般都会先了解其中的一些概念好有个整体认知,Kettle也不例外。
第一篇已经介绍了Kettle的框架和用途,这篇主要介绍Kettle核心概念:可视化编程、转换、步骤、跳、数据行、并行。
学完此篇,大家就可以上手编写一些简单功能了。如同步数据、输出Excel文件等。
可视化编程
Kettle可归为可视化编程语言,因为Kettle可以使用图形化的方式定义复杂的ETL程序和工作流。
Kettle里的图就是转换和作业。
转换
转换是ETL解决方案中的最主要的部分,它处理抽取、转换、加载各种对数据行的操作。
转换包含一个或多个步骤,读取文件/数据库、过滤数据行、数据清洗或将数据加载到数据库。
转换里的步骤通过跳(hop)来连接,跳定义一个单向通道,允许数据从一个步骤向另一个步骤流动。
在Kettle里,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动。
Step步骤
步骤是转换里的基本的组成部分。
1、 步骤需要有一个名字,且在转换范围内唯一。
2、 每个步骤都会读、写数据行(唯一例外是“生成记录”步骤,该步骤只写数据)
3 、步骤将数据写到与之相连的一个或多个输出跳,再传送到跳的另一端的步骤。
4 、大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为分发和复制,分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤。(默认是分发)
Hop跳
跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。
跳实际上是两个步骤之间的被称之为行集的数据行缓存(行集的大小可以在转换的设置里定义)。
当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。
当行集空了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行。
数据行
1、数据类型
数据以数据行的形式沿着步骤移动。一个数据行是0到多个字段的集合,字段包含下面几种数据类型:
① String:字符类型的数据
② Number:双精度浮点数
③ Integer: 带符号长整型(64bit)
④ BigNumber:任意精度数据
⑤ Date:带毫秒精度的日期时间值
⑥ Boolean:取值为true和false的布尔值
⑦ Binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据。
2、元数据
每个步骤在输入输出数据行时都有对字段的描述,这种描述就是数据行的元数据。
通常包含下面一些信息:
①字段名称:行里的字段名应是唯一的。
②类型:字段的数据类型。
③长度:字符串的长度或者BigNumber类型的长度。
④精度:BigNumber数据类型的十进制精度。
⑤格式:数据显示的方式,如日期类型“yyyy-MM-dd HH:mm:ss”。
⑥日期格式化宽容模式:在解析日期异常数据时是否支持宽容模式。例如碰到15月,如果启用宽容模式,那么15月会当成15-12=3月。
并行
跳(Hop)的这种基于行集缓存的规则允许每个步骤都是由一个独立的线程运行,这样的并发程度最高。
这一规则也允许数据以最小消耗内存的数据流的方式来处理。在数据仓库里,我们经常要处理大量数据,所以这种并发低消耗内存的方式也是ETL工具的核心需求。
对于Kettle的转换,不可能定义一个执行顺序,因为所有步骤都以并发方式执行:当转换启动后,所有步骤都同时启动,从它们输入跳中读取数据,并把处理过的数据写入到输入跳,直到输入跳里不再有数据,就中止步骤的运行。当所有的步骤都中止了,整个转换就中止了。(要与数据流向区分开)
如果你想要一个任务沿着指定的顺序执行,那么就要使用后面所讲的作业。
下篇分享Kettle中作业概念。
往期精彩回顾
ETL工具Kettle,下载与安装部署
ETL工具Kettle-简单介绍
「Java设计模式」创建型:工厂方法模式
JVM:类加载器·双亲委派模型
话说:Redis的高可用方案-Sentinel
话说:Redis中的事件和Reactor模式