最近做一个大型项目需要做数据的抽取和标准化处理,我们利用一款国外的开源工具Kettle,对Kettle的核心包进行二次开发,应用到我们的Java项目中。
Kettle工具:https://sourceforge.net/projects/pentaho/files/latest/download
Kettle源码:https://github.com/pentaho/pentaho-kettle
以下是我学习参考的资料《Kettle体系结构和源码分析》做的笔记,新版本的Kettle源码和资料描述有所出入,但也可以参考学习。
后续等我学到一定程度再分享自己的实战经验给大家。
资料地址:链接:https://pan.baidu.com/s/1nBE7x2Ll-iFNOhiMtxML1A
提取码:6gip
1.简介
Kettle它是一款国外开源的ETL工具,有两种脚本文件transformation和job,transformation完成对数据的基础转换,job则是完成整个工作流的控制。
(ETL就是数据抽取(Extract)、转换(Transform)、装载(Load)的过程。)
2.相关概念
Job:称为作业,它有不同逻辑概念的entry组件组成,数据从一个entry组件传递到另一个entry组件,并在entry组件进行相应的处理。
Transformation:称为转换,主要完成对数据的基础转换。
Entry:称为实体,它是job的组成单位、执行单元。
Step:称为步骤,它是Transformation的功能单元,是转换过程中的一个特定步骤。
Hop:称为工作流,它是转换过程的流向指示,从一个组件指向另一个组件,有无条件流向,判断为真时流向、判断为假时流向三种Hop。
3.体系结构
Kettle平台是整个系统的基础,包括元数据管理引擎、数据集成引擎、UI和插件管理模块。
(1)元数据管理引擎
元数据管理引擎管理ktr、kjb或者元数据库,插件通过该引擎获取基本信息,主要包括TransMeta、JobMeta和StepMeta三个类。
(一个完整的数据处理流程里面包含着两种脚本文件transformation和job,对应的就是一系列的以.ktr和.kjb为扩展名的文件)
TransMeta类:定义了一个转换(对应一个.ktr文件),提供了保存和加载该文件的方法
JobMeta类:对应一个工作(对应一个.kjb文件),提供保存和加载该文件的方法
StepMeta类:保