源码分析第三讲–Kettle 转换机制transformation介绍1

Posted on Posted in kettle经验分享

转换机制

  每个转换步骤都是ETL数据流里面的一个任务。转换步骤包括输入、处理和输出。输入步骤从外部数据源获取数据,例如文件或者数据库;处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤。输出步骤将数据写会到存储系统里面,例如文件或者数据库。

 

图 1 转换步骤示例

1. Step类图简介

  Kettle为扩展插件提供了4个扩展点,这4个扩展点也是每个步骤的组成。每个类都有其特定的目的及扮演的角色。以TableInput为例,下图说明了这4个类的继承体系。

 

图 2 StepInterface继承体系

  实现StepInterface接口的类,在转换运行时,将是数据实际处理的位置。每个执行线程都表示一个实现StepInterface的实例。

  BaseStep实现了StepInterface是各step具体实现类的基类。完成了公用的处理函数,如putRow(),但是对于更具体的processRow()在StepBase的子类中。StepBase的主要成员有

  public ArrayList<RowSet>  inputRowSets,outputRowSets;

  StepBase的子类每次从inputRowSets中取出一行数据,向outputRowSets中写入一行数据。

 

图 3 StepDataInterface继承体系

  实现StepDataInterface接口的类为数据类,当插件执行时,对于每个执行执行的线程都是唯一的。保存于step相关的数据信息,比如行的元数据信息。

 

图 4 StepMetaInterface继承体系

  实现了StepMetaInterface接口的类为元数据类。它的职责是保存和序列化特定步骤的实例配置,例如保存步骤的名称、字段名称等,如何生成加载xml或者读写数据库。

图 5 StepDialogInterface继承体系

  实现了StepDialogInterface接口的类为对话框类,该类实现了该步骤与用户交互的界面,它显示一对话框,通过对话框用户可以根据自己的要求进行步骤的设定。该对话框类与元数据类关系非常密切,对话框里面的配置数据均会保存在元数据类里面。