kettle系列1.kettle源码获取与运行

摘要:
英国天然气公司lonehttps://github.com/pentaho/pentaho-kettle下载代码时,您可以转到:http://community.pentaho.com/projects/data-integration/从这个地址下载最新的水壶版本。完成所有下载后,单击以下步骤以成功运行水壶源代码。这只是为了分享你运行水壶源代码的方式。老实说,当你第一次接触水壶源代码时,它并没有运行。您花了很长时间才再次尝试成功运行它。测试并分析运行十多个作业的后端水壶的性能较差,性能得到了优化。

  第一次写博客,心里有点小激动,肯定有很多需要改进的地方,望海涵。

  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或以上版本。

  1. 在eclipse导入已经存在的项目,将core、engine、ui、DB Dialog、和kettle项目本身导入eclipse,如下图所示,其他关闭的项目可以不用导入。
    kettle系列1.kettle源码获取与运行第1张
  2. 在eclipse中创建User Libraries(用户库),将下载的可运行的kettle目录下的lib目录全部添加到该用户库中,然后移除其中core、engine、ui、DB Dialog等四个jar包,再将libswt\win32目录下的swt.jar加入该用户库中,具体如下图所示。
    kettle系列1.kettle源码获取与运行第2张
  3. 然后依次右键上述导入的项目选择bulid path,将上一步创建的用户库加入类路径中,然后engine、ui、DB Dialog三个项目都依赖core,ui还要依赖engine、DB Dialog两个项目,最后还有主项目依赖上述四个项目和kettle用户库,如下图所示。
    kettle系列1.kettle源码获取与运行第3张
  4. assembly下的package-res添加为源文件如下图所示。
    kettle系列1.kettle源码获取与运行第4张
  5. 这下应该就可以成功运行kettle了,如下方式运行:
    kettle系列1.kettle源码获取与运行第5张
  6. kettle源码运行结果
    kettle系列1.kettle源码获取与运行第6张

  上述就是我运行kettle源码的方式,方式肯定有很多,这种方式应该不算难,特别是依赖jar的解决,kettle使用的是ant管理项目的,一来我平常都是使用maven管理项目,对ant不太熟悉,二来ant方式很多jar包根本下载不到。

  这里只是为了分享下自己运行kettle源码的方式,说实话刚接触kettle源码时真没运行起来,隔了好长一段时间后再次尝试才成功运行的。若想用上述方式运行又觉得麻烦的可以先按上述方式创建好以kettle命名的用户库。然后从我的github上下载配置好的kettle项目,理论上下载下来就可以用。方式如下:

  1. 按上面的步骤下载kettle安装包后在eclipse中创建好用户库。
  2. 从https://github.com/ma459006574/pentaho-kettle.git 这个地址clone代码到本地,切换到my_run分支再导入eclipse就可以了。与官方的差别只在各项目的.classpath文件,你也可以对比差异自行配置。

  后续我将介绍kettle源码结构,分享部分kettle控件改进,还会将自己定制化开发kettle(将kettle的部分功能封装到web应用中)的过程中写的kettle定制开发工具类分出来,大家一起进步。

  下面是在使用kettle过程中觉得需要改进的地方:

  1. excel 07版支持不好,07版excel两种解析工具效果都不好,poi大文件会内存溢出。
  2. excel输入控件获取sheet时本可以直接获取,结果弄得比较复杂。
  3. poi streaming存在bug,会占用文件。
  4. poi streaming以string读取时间时为数字。
  5. poi streaming部分列为空时数据错乱。
  6. 抽取ui部分方法为工具类,方便web定制开发。
  7. 数据库只要连接失败一次,后面即使数据恢复正常,kettle的连接也一直失败了。可以改为设置定时重连,涉及面较广。
  8. rar压缩文件的处理,解压控件新增选项:保留目录结构,默认勾选,不勾选则全部文件解压到指定目录。
  9. 解压控件的解压成功后移动到指定目录和删除文件功能有bug,他是对设定的根目录操作。
  10. zip解压中文目录乱码问题,kettle使用的是jdk自带解压工具类,暂时修改vfs的jar,新增编码设置,jdk6不支持设置编码,需要升级到jdk7。
  11. 压缩控件支持加密,可以更换zip解压工具为zip4j,可统一设置密码,也可从上一个流中获取。
  12. 添加操作zookeper控件,可以监控节点变化等。
  13. ftp下载控件检测目录存在时,中文目录都会失败,因为检测目录时并没有使用用户设定的编码。
  14. job开始那个定时应加一个选项,job开始先运行一次,之后再按设定的时间运行。
  15. InsertUpdate 288~293行无用代码。
  16. 测试分析后台kettle运行十几个job性能就很差了及性能优化。因为数据库资源库读取转换太慢了。
  17. xbaseinput当没有文件时没有设置输出结束,导致后面的步骤一直等待。
  18. 新增字典翻译控件,支持缓存字段表,同时翻译多个字段。

  

免责声明:文章转载自《kettle系列1.kettle源码获取与运行》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇uni-app学习随笔linux下添加简单的开机自启动脚本下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

虹软人脸识别——官方 Qt Demo 移植到 Linux

一、前言 最近需要在 Linux 平台下开发一个人脸识别相关的应用,用到了虹软的人脸识别 SDK。之前在 Windows 平台用过,感觉不错,SDK 里面还带了 Demo 可以快速看到效果。打开 Linux 版本的 SDK 里面没有发现 Demo,于是想着把 Windows 的 Demo 移植到 Linux。这篇文章记录了移植的过程,Linux 用的是 U...

SDWebImage源码解析

但凡经过几年移动开发经验的人去大公司面试,都会有公司问到,使用过哪些第三方,看过他们的源码嘛?而SDWebImage就是经常被面试官和应聘者的提到的。下面将讲述SDWebImage的源码解析以及实现原理,希望可以帮助大家加深对SDWebImage实现原理的理解!!! 一、前言 SDWebImage专门用于iOS图片加载框架,提供了网络下载并缓存图片,通过使...

kettle性能调优

性能调优在整个工程中是非常重要的,也是非常有必要的。但有的时候我们往往都不知道如何对性能进行调优。其实性能调优主要分两个方面:一方面是硬件调优,一方面是软件调优。本章主要是介绍Kettle的性能优化及效率提升。 一、Kettle调优 1、调整JVM大小进行性能优化,修改Kettle定时任务中的Kitchen或Pan或Spoon脚本。 修改脚本代码片段 se...

微信小程序 授权登录详解(附完整源码)

一、前言 由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通过 button 去触发。 官方连接:https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01 二、实现思路 自己写一个微信授权登...

Spring源码阅读环境搭建 coder

目录 安装gradle 导入Spring源码 创建测试模块my-test 其他问题spring-aspects模块构建时报错 本文思维导图 本文将粗略的搭建一个Spring源码的阅读环境,为后面的源码阅读做一个准备。做任何事情不管是有一个完美的或者是不太完美的开头,只要去做了,那么就是一种胜利。 由于spring使用了gradle构建工具,...

手写Redux-Saga源码

上一篇文章我们分析了Redux-Thunk的源码,可以看到他的代码非常简单,只是让dispatch可以处理函数类型的action,其作者也承认对于复杂场景,Redux-Thunk并不适用,还推荐了Redux-Saga来处理复杂副作用。本文要讲的就是Redux-Saga,这个也是我在实际工作中使用最多的Redux异步解决方案。Redux-Saga比Redux...