Kettle 作业(Job)和 转换(Transform)

作业(Job)由一个个步骤组成,转换只是作业的其中一个步骤。

Kettle的控件分为2种:作业(Job)和转换(Transform)。

对于作业和转换,重点记住以下3点:

  1. 作业是步骤流,转换是数据流。这是作业和转换最大的区别;
  2. 作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录、一条记录地流向最后的控件;
  3. 如果想在作业中实现把上一个步骤(trans)的数据流传给下一个步骤(trans),可以通过在上一个步骤的最后一步使用“Copy rows to result”控件,在下一个步骤的开始第一个控件使用“Get rows from result”,这样可以实现跨步骤的数据传递。或者利用一个文件、数据库表进行中转;

关于步骤流和数据流

  步骤就是完成工作的其中一个阶段,每个步骤都完成了一件独立的事情,步骤与步骤之间是独立的,但有先后顺序,步骤的组合可以形成一个工作流。比如我要上学这个工作,需要经过以下步骤:起床、洗刷、吃早餐、出门坐校车、下车去教室。每个步骤之间是有先后关系,按顺序组合之后,就完成了“去上学”这个工作;

  数据流是指从输入控件(Input)到输出控件(Output)之间的数据流动,针对的是在数据流动过程中的每一行记录、每一列数据的处理 。比如增加一个字段、对字段A截取前3位得到新的字段B、把字段A、B 串联成新的字段C,按字段A、B组合,汇总字段C(SELECT C1, C2,SUM(C3) FROM 表 GROUP BY C1, C2);

作业的控件

  • Mail -> Mail:用于发送一份邮件;
  • File Managemeng -> Create a File:用于创建一个文件;
  • Conditions -> File Exists:判断文件是否存在;
  • Scripting -> SQL:用于执行一段SQL

等等,以上控件都是完成了一项单独的工作,并不需要我们很细致地指定一条条记录如何处理。

转换的控件

  • Input -> Text File Input:加载一个文本文件的记录,可以指定每个字段的类型、长度、分隔符等;
  • Output -> Text File Output:把记录写到一个文本文件,可以指定每个字段的类型、字符集、长度、分隔符、日期格式等;
  • Transform -> Concat Fields:把2个字段合并成一个新的字段;
  • Utility -> Write to log:把每一行记录的每个字段写到日志去;

等等,以上控件针对的都是每行记录、每个字段进行处理,必须要有输入 -> 输出,以输入控件开始,以输出控件结束。

作业和转换的嵌套关系

  • 作业可以调另一个作业(用General->Job控件),强调的是父作业与子作业;
  • 作业可以调一个转换(用General->Transformation控件),强调的是其中一个步骤;
  • 转换可以调一个作业(用Flow->Job Executor控件),执行结果会变成数据流里的新的一列数据,强调的是执行结果;
  • 转换可以调另一个转换(用Flow->Transformation Executor控件),执行结果会变成数据流里的新的一列数据,强调的是执行结果;
原文地址:https://www.cnblogs.com/linbo3168/p/14113622.html