Kettle组件
Kettle安装成功后,在data-integration目录下可以看到如下四个特殊的.bat或者.sh文件,它们分别对应于Kettle的四个组件:
-
Spoon.bat/spoon.sh:用于启动Kettle的集成开发环境Spoon。它提供一个基于SWT的图形用户界面,主要用于构建ETL Jobs(作业)和Transformation(转换),也可以用于执行或调试作业和转换,还可以用于监控ETL操作的性能。
-
Pan.bat/pan.sh:Pan以命令行的方式执行转换,运行在后台,没有图形化用户界面。
-
Kitchen.bat/kitchen.sh:Kitchen以命令行的方式执行作业,运行在后台,没有图形化用户界面。
-
Carte.bat/carte.sh:Carte是基于Jetty的轻量级HTTP服务器,运行在后台,用于远程执行并监控作业和转换或在集群中并行执行作业和转换。
Kettle的概念模型
通常一个数据抽取过程主要包括创建一个Job(作业),每个作业由一个或多个Job Entry(作业项)和连接作业项的Job Hop(作业跳)组成。每个作业项可以是一个Transformation(转换)或是另一个Job(作业)。
一个转换由一个或多个Step(步骤)和连接步骤的Hop(跳)组成。
Kettle的概念
转换/作业
| 转换 / 步骤 | 作业 / 作业项 |
|---|---|
| 转换主要用于数据的抽取(Extraction),转换(Transformation)以及加载(Load)。如读取文件,过滤输出行,数据清洗或加载到数据库等步骤。 | 由一个或多个作业项(作业或转换)组成。 |
| 每个步骤都是单独的线程,当启动转换时,所有步骤的线程几乎并行执行。 | 所有的作业项是以某种自定义的顺序串行执行的。 |
| 步骤之间的数据以数据流方式传递。所有的步骤都会从它们的输入跳中读取数据,并把处理过的数据写到输出跳,直到输入跳里不再有数据就终止步骤的运行;当所有步骤都终止了,整个转换就终止了。 | 作业项之间可以传递一个包含了数据行的结果对象。当一个作业项执行完成后,再传递结果对象给下一个作业项。 |
| 没有执行顺序,也就没有起点和终点。 | 可定义起点和终点。 |
| 由于转换里的步骤依赖前一个步骤获取数据,因此转换里不能有循环。 | 作业里可以有循环。 |
跳
跳是步骤之间带箭头的连接线,它定义了一个单向通道,用于连接两个步骤,实现将数据从一个步骤(写入数据到行集)流向另一个步骤(从行集中读取数据)。
跳是两个步骤之间的被称为行集(Row Set)的数据行缓存(可以在转换设置中定义行集大小)。若行集满了,则向行集写数据的步骤将停止写入,直到行集里又有空间。若行集空了,则从行集读取数据的步骤就会停止读取,直到行集里又有可读取的数据行。
跳对于向行集写入数据的步骤来说是输出跳,一个步骤可以拥有多个输出跳;跳对于从行集中读取数据的步骤来说是输入跳。
作业跳
作业跳是作业项之间带箭头的连接线,它定义了作业的执行路径。