核心概念

kettle java脚本 获取job定义的变量 kettle执行job_数据

Job相关

Job

负责将Transformation组织在一起进而完成某一工作,通常我们需要把一个大的任务分解成几个逻辑上隔离的Job,当这几个Job都完成了,也就说明这项任务完成了。

Job Entry

Job Entry是Job内部的执行单元,每一个Job Entry用于实现特定的功能,如:验证表是否存在,发送邮件等。可以通过Job来执行另一个Job或者Transformation,也就是说Transformation和Job都可以作为Job Entry

Job Entry包含内容如下:

kettle java脚本 获取job定义的变量 kettle执行job_执行顺序_02

Job Hop

Job Hop是作业项之间的连接线。他定义了作业的执行路径。作业里每个作业项的不同运行结果决定了作业的不同执行路径。

Job Hop有如下三种执行情况:

kettle java脚本 获取job定义的变量 kettle执行job_执行顺序_03

  1. 无条件执行:不论上个作业项执行成功或者失败,下一个作业项都会执行。这是一种蓝色的连接线,上面有一个的标。
  2. 当运行结果为真时执行:当上一个作业项执行结果为真时,执行下一个作业项。通常在需要无错误执行的情况下使用。这是一条绿色的连接线,上面有对勾号的图标。
  3. 当运行结果为假时执行:当上一个作业项执行结果为假或者没有执行成功,执行一按一个作业项,这是一条红色的连接线,上面有红色停止的图标。

Transformation相关

kettle java脚本 获取job定义的变量 kettle执行job_执行顺序_04

Transformation

Transformation是对数据操作的容器,数据操作就是数据从输入到输出的一个过程,可以理解为比Job粒度更小一级的容器,我们将任务分解成Job,然后需要将Job分解成一个或多个Transformation,每个Transformation只完成一部分工作。

Step

Step是Transformation内部的最小单元,每一个Step完成一个特定的功能。

Transformation Hop

转换跳是步骤之间带箭头的连线,也是两个步骤之间的被称为行集的数据行缓存
转换跳的这种基于行集缓存的规则允许每一个步骤都是有一个独立的线程运行,这样并发程度最高。这一规则也允许数据以最小的消耗内存的数据流的方式处理。

Transformation Hop 的读写机制如下:

  1. 当行集满了,向行集写数据的步骤将停止写入,直到行集又有空间。
  2. 当行集空了,从行集读取的步骤停止读取,直到行集里又有可读的数据行。

Transformation Hop包含内容:

kettle java脚本 获取job定义的变量 kettle执行job_数据_05

Job与Transformation对比

  • 定位
  • Transformation:主要用于数据的ETL。
  • Job:组织多项任务执行(转换、作业)。
  • 执行方式
  • Transformation:每个步骤都是单线程,当启动转换时,所有步骤的线程几乎并行执行
  • Job:所有的作业项是以某种自定义的顺序串行执行的。
  • 数据传递
  • Transformation:步骤之间的数据以数据流方式传递。所有的步骤都会从输入跳(Hop)中读取数据,并把处理过的数据写到输出跳(Hop),直到输入跳(Hop)里不再有数据就终止步骤的运行;
  • Job:作业项之间可以传递一个包含了数据行的结果对象。当一个作业项执行完成后,再传递结果对象给下一个作业项。
  • 执行顺序
  • Transformation:没有执行顺序,也就没有起点和终点。
  • Job:有执行顺序,可定义起点和终点。
  • 是否循环
  • Transformation:由于转换里的步骤依赖前一个步骤获取数据,因此转换里不能有循环
  • Job:作业里可以有循环

参考资料

  1. kettle工具原理:https://www.pianshen.com/article/21451697058/