kettle系列-1.kettle源码获取与运行
第一次写博客,心里有点小激动,肯定有很多需要改进的地方,望海涵。
kettle算是我相对较为深入研究过的开源软件了,也是我最喜欢的开源软件之一,它可以完成工作中很多体力劳动,在ETL数据抽取方面得到了广泛的使用。我本身对kettle的各个控件使用也不是很熟悉,只会使用最常见的部分控件,就是这样简单的使用也被它的美深深的吸引住了。
好了,进入正题,这里假设你熟悉java开发、git一般使用、kettle一般使用。kettle源码之前托管在kettle官方的svn上,后来迁移到了github上,在github上的地址是:https://github.com/pentaho/pentaho-kettle,建议注册自己的github账户,然后将kettle项目fork一份到自己用户下,接着进入工作目录(如:E:/workspace)使用如下命令将代码克隆到本地。
git clone https://github.com/pentaho/pentaho-kettle
下载代码的同时你可以到:http://community.pentaho.com/projects/data-integration/ 这个地址下载最新的kettle发布版。都下载完成后按以下步骤最终可以成功运行kettle源码。建议使用jdk7或以上版本。
- 在eclipse导入已经存在的项目,将core、engine、ui、DB Dialog、和kettle项目本身导入eclipse,如下图所示,其他关闭的项目可以不用导入。

- 在eclipse中创建User Libraries(用户库),将下载的可运行的kettle目录下的lib目录全部添加到该用户库中,然后移除其中core、engine、ui、DB Dialog等四个jar包,再将libswt\win32目录下的swt.jar加入该用户库中,具体如下图所示。

- 然后依次右键上述导入的项目选择bulid path,将上一步创建的用户库加入类路径中,然后engine、ui、DB Dialog三个项目都依赖core,ui还要依赖engine、DB Dialog两个项目,最后还有主项目依赖上述四个项目和kettle用户库,如下图所示。

- assembly下的package-res添加为源文件如下图所示。

- 这下应该就可以成功运行kettle了,如下方式运行:

- kettle源码运行结果

上述就是我运行kettle源码的方式,方式肯定有很多,这种方式应该不算难,特别是依赖jar的解决,kettle使用的是ant管理项目的,一来我平常都是使用maven管理项目,对ant不太熟悉,二来ant方式很多jar包根本下载不到。
这里只是为了分享下自己运行kettle源码的方式,说实话刚接触kettle源码时真没运行起来,隔了好长一段时间后再次尝试才成功运行的。若想用上述方式运行又觉得麻烦的可以先按上述方式创建好以kettle命名的用户库。然后从我的github上下载配置好的kettle项目,理论上下载下来就可以用。方式如下:
- 按上面的步骤下载kettle安装包后在eclipse中创建好用户库。
- 从https://github.com/ma459006574/pentaho-kettle.git 这个地址clone代码到本地,切换到my_run分支再导入eclipse就可以了。与官方的差别只在各项目的.classpath文件,你也可以对比差异自行配置。
后续我将介绍kettle源码结构,分享部分kettle控件改进,还会将自己定制化开发kettle(将kettle的部分功能封装到web应用中)的过程中写的kettle定制开发工具类分出来,大家一起进步。
下面是在使用kettle过程中觉得需要改进的地方:
- excel 07版支持不好,07版excel两种解析工具效果都不好,poi大文件会内存溢出。
- excel输入控件获取sheet时本可以直接获取,结果弄得比较复杂。
- poi streaming存在bug,会占用文件。
- poi streaming以string读取时间时为数字。
- poi streaming部分列为空时数据错乱。
- 抽取ui部分方法为工具类,方便web定制开发。
- 数据库只要连接失败一次,后面即使数据恢复正常,kettle的连接也一直失败了。可以改为设置定时重连,涉及面较广。
- rar压缩文件的处理,解压控件新增选项:保留目录结构,默认勾选,不勾选则全部文件解压到指定目录。
- 解压控件的解压成功后移动到指定目录和删除文件功能有bug,他是对设定的根目录操作。
- zip解压中文目录乱码问题,kettle使用的是jdk自带解压工具类,暂时修改vfs的jar,新增编码设置,jdk6不支持设置编码,需要升级到jdk7。
- 压缩控件支持加密,可以更换zip解压工具为zip4j,可统一设置密码,也可从上一个流中获取。
- 添加操作zookeper控件,可以监控节点变化等。
- ftp下载控件检测目录存在时,中文目录都会失败,因为检测目录时并没有使用用户设定的编码。
- job开始那个定时应加一个选项,job开始先运行一次,之后再按设定的时间运行。
- InsertUpdate 288~293行无用代码。
- 测试分析后台kettle运行十几个job性能就很差了及性能优化。因为数据库资源库读取转换太慢了。
- xbaseinput当没有文件时没有设置输出结束,导致后面的步骤一直等待。
- 新增字典翻译控件,支持缓存字段表,同时翻译多个字段。
kettle系列-1.kettle源码获取与运行的更多相关文章
- SequoiaDB 系列之七 :源码分析之catalog节点
这一篇紧接着上一篇SequoiaDB 系列之六 :源码分析之coord节点来讲 在上一篇中,分析了coord转发数据包到catalog节点(也有可能是data节点,视情况而定).这一次,我们继续分析上 ...
- SequoiaDB 系列之六 :源码分析之coord节点
好久不见. 在上一篇SequoiaDB 系列之五 :源码分析之main函数,有讲述进程开始运行时,会根据自身的角色,来初始化不同的CB(控制块,control block). 在之前的一篇Sequ ...
- Java集合系列[4]----LinkedHashMap源码分析
这篇文章我们开始分析LinkedHashMap的源码,LinkedHashMap继承了HashMap,也就是说LinkedHashMap是在HashMap的基础上扩展而来的,因此在看LinkedHas ...
- Java并发系列[2]----AbstractQueuedSynchronizer源码分析之独占模式
在上一篇<Java并发系列[1]----AbstractQueuedSynchronizer源码分析之概要分析>中我们介绍了AbstractQueuedSynchronizer基本的一些概 ...
- Java并发系列[3]----AbstractQueuedSynchronizer源码分析之共享模式
通过上一篇的分析,我们知道了独占模式获取锁有三种方式,分别是不响应线程中断获取,响应线程中断获取,设置超时时间获取.在共享模式下获取锁的方式也是这三种,而且基本上都是大同小异,我们搞清楚了一种就能很快 ...
- Java并发系列[5]----ReentrantLock源码分析
在Java5.0之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile.我们知道synchronized关键字实现了内置锁,而volatile关键字保证了多线程的内存可 ...
- Mybatis 系列10-结合源码解析mybatis 的执行流程
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
- Mybatis 系列8-结合源码解析select、resultMap的用法
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
- Mybatis 系列7-结合源码解析核心CRUD 配置及用法
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
随机推荐
- java 装饰者模式与继承的区别
装饰者模式目标 把许多要实现的功能,加载在子类上,类的继承,显得很臃肿,装饰着模式是在不改变原有类文件和使用继承的情况下,通过创建一个包装对象动态地扩展一个对象的功能,相比生成子类更为灵活 装饰者模式 ...
- python基础-牛逼的三层循环,实现想在那里退出,就在那里退出。
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige tag=True #设置tag控制他,只要一输入Flash就退出整个循环 wh ...
- 线段树 poj 1436
题目大意:给出n条垂直于x轴的线段的数据y1,y2,x,求出有几个三条线段一组的三元组并且他们兩兩能相见的.思路:对y轴建树,将x排序,然后按顺序边询问边擦入,用mark[i][j]表示j往左可以看到 ...
- Unable to load R3 module D:\Program Files\Oracle\VirtualBox/VBoxDD.DLL (VBoxDD): GetLastError=1790 (VERR_UNRESOLVED_ERROR).
Unable to load R3 module D:\Program Files\Oracle\VirtualBox/VBoxDD.DLL (VBoxDD): GetLastError=1790 ( ...
- 快速上手php:使用PhpStrom调试php
闲话 使用phpStrom的时候居然不打印到控制台,要打印测试的话就要输出到页面,目前我还不知道有什么好办法像jsp一样输出到页面的同时也打印到控制台.这种做法还是比较烦的,特别出问题需要调试的时候. ...
- Mysql服务启动的时候 如何加载配置文件
Mysql服务启动的时候 如何引导配置文件 (启动加载顺序)
- webpack解惑:require的五种用法 (转)
我之前在 <前端搭环境之从入门到放弃>这篇文章中吐槽过,webpack中可以写commonjs格式的require同步语法,可以写AMD格式的require回调语法,还有一个require ...
- java 实现文件下载
需求:把每天产生的日志文件,从服务器上下载下来 File file = new File(path); // 根据路径,获取File String filename = file.getName(); ...
- [NHibernate]存储过程的使用(一)
目录 写在前面 文档与系列文章 Nhibernate中使用存储过程 一个例子 总结 写在前面 上篇文章一个小插曲,分析了延迟加载是如何解决N+1 select查询问题的.这篇开始介绍在nhiberna ...
- MathType 6.9 介绍安装
1.介绍 MathType是强大的数学公式编辑器,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷.书籍.报刊.论文.幻灯演示等方面,是编辑数学资料 ...