文档章节

Kettle 6.x 源码开发环境搭建

空山苦水禅人
 空山苦水禅人
发布于 2016/11/02 18:06
字数 1242
阅读 3961
收藏 15

1、引言

Data Integration - Kettle 作为免费开源的ETL工具,可以通过其桌面程序进行ETL步骤的开发并执行。kettle以插件形式来实现每个转换步骤的工作,发行版中已经提供了常用的转换清洗插件,如果还不能满足业务需求的话,则可以自己开发相应插件实现。但在使用原有插件或者自定义插件的过程中遇到问题时,如果不好定位原因,则可以通过源码环境来调试,可以更加方便和容易地解决问题。另外,通过源码的开发和学习,也能更加深入地理解kettle的原理。

2、环境准备

◆下载kettle工具包

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”这个类找不到的错误,可以从这里下载旧版源码:http://pan.baidu.com/s/1kVjqUaz ),地址:https://github.com/pentaho/pentaho-kettle,从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最近重新发布过,按此教程搭建后代码也可能有错不能运行,可以从这里下载旧版源码:http://pan.baidu.com/s/1kVjqUaz 进行搭建。

 

-------------------------------------------------------------------------------------------

大家在使用过程中如果有什么问题,可以加QQ群:195548102一起讨论。

-------------------------------------------------------------------------------------------

© 著作权归作者所有

共有 人打赏支持
空山苦水禅人
粉丝 18
博文 18
码字总数 11897
作品 0
成都
后端工程师
私信 提问
加载中

评论(7)

喵喵leilei
喵喵leilei

引用来自“遥远的绝响”的评论

已解决 。
删掉 /plugins/kettle5-log4j-plugin 就好了,这插件有bug。
谢谢,相同错误!删除运行成功了
杜身星
杜身星
定制开发plugin,想做代码调试。按照How to debug a Kettle 4 plugin 那个办法,将plugin源码使用link-source引入kettle的项目发现没有作用,启动后的kettle并没有加载自己的plugin,请问新的版本里怎么debug 自己的plugin代码?
空山苦水禅人
空山苦水禅人

引用来自“冰绿茶88”的评论

按照上面的方法,搭建环境后,不能自动编译class,把core、dbdialog、engine的jar导入可以编译class。请问这是什么原因啊。
eclipse4.5 jdk1.8
还需要其他什么配置吗?

按此流程一般是没有问题的,如果不行可以加QQ群:195548102咨询。
冰绿茶88
按照上面的方法,搭建环境后,不能自动编译class,把core、dbdialog、engine的jar导入可以编译class。请问这是什么原因啊。
eclipse4.5 jdk1.8
还需要其他什么配置吗?
空山苦水禅人
空山苦水禅人

引用来自“遥远的绝响”的评论

已解决 。
删掉 /plugins/kettle5-log4j-plugin 就好了,这插件有bug。
:bowtie:这个是有问题,也可以忽略,不影响其他功能。
遥远的绝响
遥远的绝响
已解决 。
删掉 /plugins/kettle5-log4j-plugin 就好了,这插件有bug。
遥远的绝响
遥远的绝响
按照大神的方法,可以启动。
但是报了一个错:java.lang.ClassCastException: org.apache.log4j.ConsoleAppender cannot be cast to org.apache.log4j.Appender。
请大神赐教,怎么解决啊
Angular2从搭建环境到开发步骤详解

angular2 本身提供了起步项目 angular2-quickstart,扩展需要自行安装,之后看了一下 angular-cli 部署简单易用,还提供了快捷搭建项目的目录。 安装首先,最好先升级 node 到 6.x 可以避免 ...

呼呼南风
2016/11/26
47
0
kettle之旅--安装启动kettle

安装环境准备 kettle是基于java开发的,所以安装kettle之前需要配置好java运行环境即jre或jdk. 支持的操作系统 1. window 2. linux 3. ios kettle与Jdk的版本的对应 注意,kettle的每一个版本...

cimenbi
07/29
0
0
kettle之旅--下载获取kettle

获取kettle,这个文章很多小伙伴都觉得没必要,其实我想说,既然研究这个解决方案,那知其然知其所以然。 kettle源码 kettle是开源的,所以开源的地址在哪里呢? 当然是github: https://git...

cimenbi
07/29
0
0
Kettle7.1源码运行成功之后,kettle的界面上没有了资源库连接按钮,请问怎么回事?

部署了7.1的kettle的源码,能成功运行,但是就是没有了连接资源库的按钮connect,而且菜单里面的资源库信息也都变成了灰色的。源码和发行包差别在哪呢。./kettle下面啊的repositories.xml...

影非弦
04/02
0
0
kettle 转换中数据连接用户的口令可以用参数或环境变量吗?

请教各位高手,在kettle中,DB连接中数据用户的口令是直接输入的,repository中的保存的口令是加密的。这样有个问题,作业是在开发环境中开发测试的,生产线上的数据库用户名和口令都跟开发环...

gaolunyong
2013/01/21
581
3

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
0
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
0
0
Mybatis 学习笔记四 MyBatis-Plus插件

Mybatis 学习笔记四 MyBatis-Plus插件 maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <ve......

晨猫
昨天
2
0
小白带你认识netty(二)之netty服务端启动(下)

承接上一篇小白带你认识netty(二)之netty服务端启动(上),还剩下两步骤:3、注册Selector:将Channel注册到Selector上 和 4、端口的绑定:服务端端口的监听。 3、注册Selector:将Chann...

天空小小
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部