1、引言
Data Integration - Kettle 作为免费开源的ETL工具,可以通过其桌面程序进行ETL步骤的开发并执行。kettle以插件形式来实现每个转换步骤的工作,发行版中已经提供了常用的转换清洗插件,如果还不能满足业务需求的话,则可以自己开发相应插件实现。但在使用原有插件或者自定义插件的过程中遇到问题时,如果不好定位原因,则可以通过源码环境来调试,可以更加方便和容易地解决问题。另外,通过源码的开发和学习,也能更加深入地理解kettle的原理。
2、环境准备
◆下载kettle工具包
在找到下载地址,下载pdi-ce-{version}.zip的免安装包,本文以pdi-ce-6.1.0.1-196.zip为例,具体的地址在https://sourceforge.net/projects/pentaho/files/Data%20Integration/6.1/pdi-ce-6.1.0.1-196.zip/download。下载完成后,解压之。本文解压后命名为data-integration6.1,如图:
◆下载kettle源码
前往github下载kettle源码(github上kettle源码pentaho-kettle-6.1.0.1-R最近重新发布过,按此教程搭建后代码可能报“org.pentaho.vfs.ui.VfsResolver”这个类找不到的错误,可以从这里下载旧版源码: ),地址:,从Releases发布版本中选择与上一步下载的工具对应的版本下载,最后解压源码。如下图所示:
选择对应版本下载zip或者gz包:
本文下载pentaho-kettle-6.1.0.1-R.zip,解压后文件夹名为pentaho-kettle-6.1.0.1-R,如下图:
3、开发环境搭建
具体步骤如下:
1)在Eclipse中新建java project项目kettle-src,java环境设置为JDK或者JRE,不要选JavaSE,不然会报缺少Krb5loginModule的错误。
2)在kettle-src根目录下,新建core、engine、dbdialog、ui四个文件夹(注意是文件夹,非package!),并将四个文件夹设置为source folder(在文件夹上右键点击>>Build Path>>Use as Source Folder或者在项目的Java Build Path里面选择Source选项卡,将四个文件夹添加进去)。
3)进入源码解压包,将pentaho-kettle-6.1.0.1-R\core\src下面的内容全部拷贝到项目的core文件夹下,同样,将engine、dbdialog、ui三个文件夹src下的内容也分别拷贝到项目对应的文件夹下。
4)将源码包下pentaho-kettle-6.1.0.1-R\assembly\package-res\ui(或者工具包下ui文件夹data-integration6.1\ui)里面的内容拷贝到项目ui文件夹下。
5)进入kettle桌面工具的解压包,将lib文件夹(data-integration6.1\lib)及其里面的jar全部拷贝到项目根目录下,并删除kettle-core-6.1.0.1-196.jar、kettle-dbdialog-6.1.0.1-196.jar、kettle-engine-6.1.0.1-196.jar三个jar包,再将data-integration6.1\libswt目录下,对应操作系统的文件夹下的swt.jar(本文选择data-integration6.1\libswt\win64\swt.jar)拷贝到项目的lib下,最后将lib下所有的jar包添加到项目的build path中。
6)在项目根目录下新建plugins文件夹,然后根据需要将工具包下的plugins里面的插件拷贝到plugins目录下(如果不在项目下建立plugins目录,也可以在系统的user_home/.kettle/下面创建plugins目录,比如在C:\Users\Administrator\.kettle下面创建)。
至此,环境准备完毕,最后项目结构如下图所示:
4、运行程序
定位到Spoon.java类:/kettle-src/ui/org/pentaho/di/ui/spoon/Spoon.java,运行即可看到kettle的桌面程序了。至于JVM的参数(-Xms1024m -Xmx2048m等),也可以在Run Configurations里面进行设置,具体大小根据自己系统决定,比如:
5、总结
- 新建项目后,java环境设置为JDK或者JRE
- 新建core、engine、dbdialog、ui四个文件夹后需要添加为source folder,并拷贝源码包下面相应文件夹下的src下的内容到各个文件夹中
- 还需要拷贝源码包下pentaho-kettle-6.1.0.1-R\assembly\package-res\ui里面的内容到项目ui文件夹下
- 添加工具包的lib下的jar以及libswt下对应平台的swt.jar,kettle-core、kettle-dbdialog、kettle-engine开头的三个jar不要添加的项目的build path中
- 如果需要使用plugins里面的功能,还需要创建plugins目录并拷贝相应内容,自己开发的插件也需要放入plugins下(当然也可以放入lib下,关于自己开发插件的方法,请关注后续文章)
- 调试模式下运行Spoon的话,可以进行断点调试,方便排查问题
后记
github上kettle源码pentaho-kettle-6.1.0.1-R最近重新发布过,按此教程搭建后代码也可能有错不能运行,可以从这里下载旧版源码: 进行搭建。
-------------------------------------------------------------------------------------------
大家在使用过程中如果有什么问题(或者索取配置好可直接运行的版本),可以加QQ群:195548102一起讨论。
-------------------------------------------------------------------------------------------