第一次写博客,心里有点小激动,肯定有很多需要改进的地方,望海涵。
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或以上版本。
上述就是我运行kettle源码的方式,方式肯定有很多,这种方式应该不算难,特别是依赖jar的解决,kettle使用的是ant管理项目的,一来我平常都是使用maven管理项目,对ant不太熟悉,二来ant方式很多jar包根本下载不到。
这里只是为了分享下自己运行kettle源码的方式,说实话刚接触kettle源码时真没运行起来,隔了好长一段时间后再次尝试才成功运行的。若想用上述方式运行又觉得麻烦的可以先按上述方式创建好以kettle命名的用户库。然后从我的github上下载配置好的kettle项目,理论上下载下来就可以用。方式如下:
后续我将介绍kettle源码结构,分享部分kettle控件改进,还会将自己定制化开发kettle(将kettle的部分功能封装到web应用中)的过程中写的kettle定制开发工具类分出来,大家一起进步。
下面是在使用kettle过程中觉得需要改进的地方:
1.文件加载如内存功能修改,文件内容默认为二进制,这样就可以将图片、压缩文件等复制,存入数据库等。7.文件加载如内存功能的convertRowMeta和outputRowMeta都没有考虑编码stringEncoding。相关克隆也都没有考虑编码。2.转换中,支持#{}方式取前一个步骤中的字段14.java脚本和Javascript脚本(希望能将json都对象使用)都还太难用,好好改进后kettle就牛逼了。3.java脚本支持用户新增导入包4.Excel 07版支持不好,07版excel两种解析工具效果都不好,poi大文件会内存溢出,poi stream有如17-19问题。16.excel输入控件获取sheet时本可以直接获取,结果弄得比较复杂。17.poi streaming存在bug,会占用文件。18.poi streaming以string读取时间时为数字。19.poi streaming部分列为空时数据错乱。5.抽取ui部分方法为工具类,方便web定制开发。6.数据库只要连接失败一次,后面即使数据恢复正常,kettle的连接也一直失败了。可以改为设置定时重连,涉及面较广。8.rar压缩文件的处理,解压控件新增选项:保留目录结构,默认勾选,不勾选则全部文件解压到指定目录。9.解压控件的解压成功后移动到指定目录和删除文件功能有bug,他是对设定的根目录操作。10.zip解压中文目录乱码问题,kettle使用的是jdk自带解压工具类,暂时修改vfs的jar,新增编码设置,jdk6不支持设置编码,需要升级到jdk7.11.zip解压不支持密码,可以更换zip解压工具为zip4j12.压缩控件支持加密,可统一设置密码,也可从上一个流中获取。20.解压控件新增支持rar解压。13.添加操作zookeper控件,可以监控节点变化等。15.新增dmp入库控件,用脚本入库还是不太方便。21.ftp下载控件检测目录存在时,中文目录都会失败,因为检测目录时并没有使用用户设定的编码。
新闻热点
疑难解答