前话

本系列文章,重点剖析PDI的工作原理并关注系统的代码处理,学习软件的编码能力和代码的设计模式。该系统为我们快速搭建集群应用又提供了一种思路。在开始这系列文章之前,我认可你是懂java语法的人,对脚本有一定的认识,在软件面前有渴望知道原理的求知欲。本系列文章采用最新的开源版本

pdi-ce-5.0.1.A-stable,我希望通过我的努力能为ETL方面贡献我微薄的力量。

简介

Kettle是一个纯java编写的开源的ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)项目。Kettle是水壶的意思。按项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出。2006年 Kettle 加入了开源的 BI 组织 Pentaho, 正式命名为 PDI ( Pentaho Data Integeration )。加入Pentaho 后Kettle 的发展越来越快了,并有越来越多的人开始关注它了。Kettle绿色无需安装,数据抽取高效稳定。

正文

到PDI 官网上去下载最新的版本包:

http://sourceforge.net/projects/pentaho/files/Data%20Integration/5.0.1-stable/pdi-ce-5.0.1.A-stable.zip/download

到如下源码站点,找到与之对应的源码:

https://github.com/pentaho/pentaho-kettle/releases

我们打开编译过的包,直接解压。如果设置了java环境变量,你就可以直接点击spoon脚本,打开PDI并看到他的操作界面了。首先,我们不着急打开,先看下你解压过后的文件,我们来大致了解下文件布局构造。

  • lib:项目依赖jar包。比较重要的是以kettle和pentaho打头的jar包。支持整个工具的运行。如下,也是我们比较关注源码的地方。

     
  • libswt: PDI采用了xul界面技术。所有界面的开发采用了swt组件。该目录,包含了所用到的jar包,并且根据操作系统平台做到了差异化加载jar包的控制。
  • Plugins:插件目录。系统开放插件接口,可以对平台插件做扩展。

  • Pwd:存放集群化的配置文件和访问授权文件kettle.pwd
  • Ui: 系统所有的界面xul文件和引用的图片资源文件。
  • 脚本:各种启动脚本。重点有四个 spoot/ pen/ kitchen/ carte。这些脚本的作用,后面我们再详细阐述。

到这里,有人或许已经打开了PDI的工作页面,并根据教程,已经对脚本有了基本概念。但这些不是我们的目的,我们要把项目从eclipse上启动起来。

新建java项目,笔者以pentaho_kettle 为项目名。

源码项目是用ivy来管理的,为了减(我)少(也)麻(不)烦(会),我们把项目的源码改成eclispe上的java工程项目。打开源码包里有几个比较重要的目录。

跟之前的lib的依赖包是一致的。好了我们在工程里建立相应的源码目录,把源码包相应模块下的src目录内容拷贝进来。拷贝进来后,代码会报错,到上面提到的lib包下,我们把需要引用的jar包都考进工程里,并构建到工程中。

注意:已经引入源码的jar包就不要再引入了。另外swt包没有了脚本对操作系统的判断,自己根据自己的系统的类型,手动选择引入吧。其他的目录文件,如docs 、pwd、simple-jndi等虽然不会造成项目编译不了,但是作为资源,缺失会报错的,所以还是要拷贝进来的。

到这里,你的源码搭建就OK了,如果你对脚本有了解的话,不难看出spoon启动脚本,对应的是Spoon.java.该类的main方法便是整个工具的入口。这里看到脚本对启动参数有了部分的设置,我们在启动配置时加入该参数。

VM参数 写道
-Xmx512m
-XX:MaxPermSize=256m
-Djava.library.path=libswt\win32
-DKETTLE_HOME=
-DKETTLE_REPOSITORY=
-DKETTLE_USER=
-DKETTLE_PASSWORD=
-DKETTLE_PLUGIN_PACKAGES=
-DKETTLE_LOG_SIZE_LIMIT=
-DKETTLE_JNDI_ROOT=

启动,OK!

  • 大小: 126.7 KB
  • 大小: 134.9 KB
  • 大小: 129 KB
  • 大小: 136.1 KB
  • 大小: 161.1 KB
  • 大小: 412.5 KB
  • 大小: 295.8 KB
  • 查看图片附件

品味kettle--(一)用eclipse 搭建源码相关推荐

  1. 聊聊 Kafka:编译 Kafka 源码并搭建源码环境

    一.前言 老周这里编译 Kafka 的版本是 2.7,为啥采用这个版本来搭建源码的阅读环境呢?因为该版本相对来说比较新.而我为啥不用 2.7 后的版本呢?比如 2.8,这是因为去掉了 ZooKeepe ...

  2. android eclipse关联源码,以及源码(代码)以及jar查看软件

    1.eclipse关联源码 步骤一:自已百度下载相应版本的源码,我这里是4.2也就是API=17的版本. 步骤二:找到你安装sdk的目录, G:\Program Files\adt-bundle-wi ...

  3. Eclipse查看源码乱码问题

    在同一个工作区下,依赖的Jar包如果既有GBK编码,又有UTF-8编码,就会出现的问题. 常规解决方法 1.切换工作区编码.麻烦,效率低. 2.设置Jar包编码,只有Eclipse4.2支持,4.0以 ...

  4. 个人免签支付接口系统搭建源码多种方式

    ## 个人免签支付接口系统搭建源码多种方式 聚合支付源码,多通道轮询,Api自动代付,代理分润 演示地址:http://aa.hocan.cn 一.首先目前的现状是: 支付宝和微信早已不再支持个人接入 ...

  5. 直播平台搭建源码,uniapp progress进度条

    直播平台搭建源码,uniapp progress进度条 .progress-container {height: 20rpx;display: flex;flex-direction: row;ali ...

  6. 补单系统平台开发补单网站搭建源码部署(TB+PDD+验号功能)

    补单系统平台开发补单网站搭建源码部署(TB+PDD+验号功能) 现在的电商平台竞争可以说是非常的激烈,不管你是在淘宝.京东.拼多多.还是在阿里巴巴,这些平台的商品信息已经是非常的丰富了.你想单纯的靠传 ...

  7. 外卖返利cps分销系统每日领卷美团优惠券红包流量小程序搭建源码

    外卖返利cps分销系统每日领卷美团优惠券红包流量小程序搭建源码 下面是无裂变版本的搭建教程. 源码地址:http://y.mybei.cn 部署步骤 部署后台,填资料 登录后台 http://q.my ...

  8. 个人发卡网搭建源码_免费建设一个个人网站到底能不能实现

    免费建一个个人网站到底能不能实现,这是现如今互联网时代想要一个个人网站的每个人都想知道的一个问题. 我们现在搭建一个网站大多都是先注册一个域名,然后购买虚拟主机或云服务器,最后找个现成的模板上传到虚拟 ...

  9. linux eclipse 关联源码,获取Hadoop的源码和通过Eclipse关联Hadoop的源码

    一.获取Hadoop的源码 首先通过官网下载hadoop-2.5.2-src.tar.gz的软件包,下载好之后解压发现出现了一些错误,无法解压缩, 因此有部分源码我们无法解压 ,因此在这里我讲述一下如 ...

最新文章

  1. Hibernate---进度1
  2. Dubbo框架设计原理
  3. DeepEarth更新到Silverlight 4了
  4. python excel模板 插件_python脚本——自动推送txt,EXCEL等文件模板
  5. oracle ldap 配置,Ubuntu安装OpenLDAP之配置LDAP
  6. 【报告分享】预见2021-罗兰贝格中国行业趋势报告.pdf(附下载链接)
  7. matlab 声明多个变量,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!...
  8. iis7 php mysql安装包_IIS7+PHP+MYSQL安装
  9. 【代理】http代理之快代理
  10. 在linux中加固mysql_linux安全加固十六法则
  11. 带宽总结:3dB带宽、零点到零点带宽、均方根带宽等
  12. 【小程序】安卓端InnerAudioContext无法销毁
  13. 证明:二阶导函数大于零时为凹函数
  14. 投稿状态(status)记录 IEEE wireless communications letters (IEEE WCL)
  15. 【educoder 机器学习】决策树
  16. php数字对应的大字母,PHP判断数字,字母,特殊符号,中文 - 米扑博客
  17. php汽车找车位,六款停车APP吐血实测 竟能找到免费停车场?
  18. 苏宁易购开放平台_发力内循环,苏宁易购开放平台商品交易规模大增56.83%
  19. 【一句日历】2019年3月
  20. 无约束多维极值求解思路

热门文章

  1. 串口转以太网服务器市场现状研究分析与发展前景预测报告
  2. spring 中使用tdd_通过JavaScript中基于属性的TDD的钻石方块
  3. java.util.concurrent.TimeoutException: Waited 3000 milliseconds (plus 2 milliseconds, 351400 nanosec
  4. SLAM十四讲ch5 joinMap错误解决
  5. java实现清除图片水印_Java实现图片水印
  6. PDF文件格式转换攻略:PDF格式转换图片格式
  7. 微软认知服务应用秘籍 – 漫画翻译篇
  8. ARM开发工具软件命令详解---嵌入式回归第三篇
  9. win7 Host 与virtualbox 中的 ubuntu 11.04 共享文件夹
  10. HTML和CSS基础学习