kettle基础概念的学习
参考书籍:Pentaho Kettle Solutions中文版。由于最近不断的使用kettle,随着不断深入使用,遇到的问题越来越多,发现脑子那点货根本不够用,所以根据阅读把一些概念记录一下,方便自己观看,也希望读看到帖子的有所帮助。
1、转换。Kettle在运行转换的时候,根据用户的设置,可以将数据以不同的方式发送到多个数据流中。
注意:有两种基本发送方式,即分发和复制,分发类似于发扑克牌,以轮流的方式将每行数据只发给一个数据流。复制是将一行数据发给所有数据流。
2、转换。转换以并行的方式执行,就需要一个可以串行执行的作业来处理这些操作(作业以串行执行)。
3、转换。是ETL解决方法中最主要的部分,它处理抽取,转换,加载各阶段各种对数据行的操作。转换包括一个或者多个步骤(step),如读取文件,过滤输出行,数据清洗或者将数据加载到数据库。转换里面的步骤通过跳(hop)来连接,跳定义了一个单向通道,允许数据从一个步骤向另一个步骤流动。在Kettle里面,数据的单位是行,数据流就是数据行从一个步骤到另一个步骤的移动。数据流的另一个同义词就是记录流。注意,转换里面还可以包含注释,注释一个小的文本框,可以放在转换流图的任何位置。注释的主要目的是使转换文档化,方便自己以后熟悉和学习。
4、转换。转换的注意点,步骤是转换里面的基本组成部分,它以图标的方式图形化的展示。一个步骤有如下几个关键特性。步骤需要有一个名字,且这个名字在转换范围里唯一。步骤将数据写到与之相连的一个或者多个输出跳(outgoing hops),再传送到跳的另一端的步骤。对另一端步骤来说这个跳就是一个输入跳(incoming hops),步骤通过输入跳接受数据。大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为轮流发送和复制发送。轮流发送是将数据行依次发给每一个输出跳(这种方式也称为round robin),复制发送是将全部数据行发送给所有输出跳。在运行转换的时候,一个线程运行一个步骤和步骤的多份拷贝,所有的步骤的线程几乎同时运行,数据行连续的流过步骤之前的跳。
5、转换的跳。跳(hop)就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。跳实际上是两个步骤之间的被成为行集(row set)的数据行缓存(行集的大小可以在转换的设置里面定义)。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集空了,从行集读取数据的步骤停止读取,直到行集里面又有了可读的数据行。注意,当创建新跳的时候,需要记住跳在转换里面不能循环。因为在转换里面每个步骤都依赖前一个步骤获取字段值。
6、转换的并行。跳的这种基于行集缓存的规则允许每个步骤都由一个独立的线程运行,这样并发程度最高。这一规则也运行数据以最小消耗内存的数据流的方式来处理。在数据仓库里面,我们经常要处理大量数据,所以这种并发低耗内存的方式也是ETL工具的核心需求。对于kettle,不可能定义一个执行顺序,不可能也没有必要确定一个起点和终点。因为所有步骤都以并发方式执行。当转换启动后,所有步骤都同时启动,从他们的输入跳中读取数据,并把处理过的数据都写到输出跳,直到输入跳里面不再有数据,就中止步骤的运行。当所有的步骤都中止了,整个转换就中止了,也就是说,从功能的角度来看,转换也有明确的起点和终点。注意,转换里面的步骤几乎是同时启动的,所有如果想要一个任务沿着指定的顺序执行,那么就要使用作业(job)了。
7、转换的设计。当设计转换的时候有几个数据类型的规则需要注意。行级里所有行都应该有同样的数据结构。就是说,当从多个步骤向一个步骤里面写数据的时候,多个步骤输出的数据行应该有相同的结构,即字段相同,字段数据类型相同,字段顺序相同。字段元数据不会在转换中发生变化。意思就是说,字符串不会自动截取长度以适应指定的长度,浮点数也不会自动取整以适应指定的精度。这些功能必须通过一些指定的步骤来完成。默认情况下,空字符串"",被认为与NULL相同。
8、作业(job)。作业按照一定的顺序完成,因为转换以并行方式执行的,就需要一个可以串行执行的作业来处理一系列按照顺序完成的操作。一个作业包括一个或者多个作业项,这些作业项以某种顺序来执行。作业执行顺序由作业项之间的跳(job hop)和每个作业项的执行结构来决定。如同转换,作业里面也可以包括注释。
9、作业项。作业项是作业的基本构成部分。如同转换的步骤,作业项也可以使用图标的方式图形化展示。作业项的注意点。新步骤的名字应该是唯一的,但是作业项可以有影子拷贝。这样可以把一个作业项放在不同的位置。这些影子拷贝里的信息都是相同的,编辑一份拷贝,其他拷贝也会随之修改。在作业项之间可以传递一个结果对象(result object)。这个结果对象里包含了数据行,它们不是以流的方式来传递的。而是等一个作业项执行完了,再传递给下一个作业项。默认情况下,所有的作业项都是以串行方式执行的,只是在特殊情况下,以并行方式执行。
10、kettle启动脚本介绍(window版本)。
Spoon.bat,集成开发环境。提供了一个图形化用户界面,用于创建或者编辑作业或者转换。Spoon也可以用于执行或者调试作业或者转换,它也有性能监控的功能。
Kitchen.bat,作业的命令行运行程序,可以通过Sheel脚本来调用。Scheel脚本一般通过调度程序,如cron或者Windwos计划任务,来调度执行。
Pan.bat,转换的命令运行程序,和Kitchen一样通过Sheel脚本来调用。执行转换而不是作业。
Carte.bat,轻量级的Http服务器(基于Jetty),后台运行,监听Http请求来运行一个作业。Carte用于分布式和协调跨机器执行作业,也就是Kettle的集群。
待续......