一.Kettle设计模块
1.转换
转换是ETL解决方案中最主要的部分,它处理抽取、转换、加载各阶段各种对数据行的操作。转换包括一个或多个步骤(step),如读取文件、过滤输出行、数据清洗或将数据加载到数据库。
转换里的步骤通过跳(hop)来连接,跳定义了一个单向通道,允许数据从一个步骤向另一个步骤流动。
步骤
步骤是转换里的基本组成部分。
转换的跳
跳是步骤之间带箭头的连线,其定义了步骤之间的数据通路。其实际上是两个步骤之间的被称为行集(row set)的数据行缓存(其大小可以在转换的设置里定义)。
并行
跳的这种基于行集缓存的规则允许每个步骤都由一个独立的线程运行,这样并发程度最高。
不可能定义一个执行顺序,因为所有步骤都以并发方式执行:当转换启动后,所有步骤同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输出跳。
如果想要一个任务沿着指定顺序执行,需要用到“作业”。
数据行
数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合。
数据转换
既可以显式地转换数据类型,如在“字段选择”步骤中直接选择要转换的数据类型,也可以隐式地转换数据类型,如将数值类型数据写入数据库中的varchar类型字段。
2.作业
一个作业包括一个或多个作业项,其间按照某种顺序来执行。作业执行顺序由作业项之间的跳(job hop)和每个作业项的执行结果来决定。如下图:
多路径和回溯
Kettle使用回溯算法来执行作业里的所有作业项:假设执行到了图里一条路径的某个节点时,要依次执行这个节点的所有子路径,直到没有再可以执行的子路径,就返回该节点的上一节点,反复这个过程。