一、问题背景
在使用Kettle的过程中,有可能遇到现有步骤无法满足需求的情况。解决此类问题,有诸如购买第三方插件、开发插件、自定义Java类等办法。最后一种办法因其代价小且门槛较低而成为最为常用的定制方法。本文将解释Java代码步骤的原理,并通过一个实际案例,快速掌握相关入门知识。
二、原理剖析
Java代码步骤,位于Kettle转换的核心对象/脚本类别中,属于典型的需要编程基础才能掌控的步骤类型。而Java代码步骤,适用于熟悉Java语言的开发人员,用好这个步骤,需要对类、接口、多线程等语言相关知识有所掌握,并且需要对Kettle的基础框架有所理解。Java语言的基础知识不在本文讨论范围,下面将着重对Kettle框架的核心部分进行解释。
Kettle转换的执行,有以下三个核心的生命周期节点:
1、初始化
Kettle转换在执行前,会有一个各步骤的初始化动作,为步骤执行前的准备工作创造机会。为提高初始化的性能,Kettle为每个步骤启用一个初始化线程,从而并行完成所有步骤的初始化。初始化的主要内容就是调用一次步骤的以下方法:
public boolean init( StepMetaInterface meta, StepDataInterfacedata)
此方法包含两个参数。其中,meta为元数据,data为数据。如果返回true,那么代表初始化成功,否则代表初始化失败。任何一个步骤初始化失败,都会导致整个转换停止执行(在停止前,会调用每一个转换的资源释放方法dispose)。
2、执行
执行阶段是每一个步骤实现特定价值的时候。为提高效率,Kettle为每一个步骤单独启动