|
前話(huà) 本系列文章,重點(diǎn)剖析PDI的工作原理并關(guān)注系統(tǒng)的代碼處理,學(xué)習(xí)軟件的編碼能力和代碼的設(shè)計(jì)模式。該系統(tǒng)為我們快速搭建集群應(yīng)用又提供了一種思路。在開(kāi)始這系列文章之前,我認(rèn)可你是懂java語(yǔ)法的人,對(duì)腳本有一定的認(rèn)識(shí),在軟件面前有渴望知道原理的求知欲。本系列文章采用最新的開(kāi)源版本 pdi-ce-5.0.1.A-stable,我希望通過(guò)我的努力能為ETL方面貢獻(xiàn)我微薄的力量。
到PDI 官網(wǎng)上去下載最新的版本包: http:///projects/pentaho/files/Data%20Integration/5.0.1-stable/pdi-ce-5.0.1.A-stable.zip/download
到如下源碼站點(diǎn),找到與之對(duì)應(yīng)的源碼: https://github.com/pentaho/pentaho-kettle/releases
我們打開(kāi)編譯過(guò)的包,直接解壓。如果設(shè)置了java環(huán)境變量,你就可以直接點(diǎn)擊spoon腳本,打開(kāi)PDI并看到他的操作界面了。首先,我們不著急打開(kāi),先看下你解壓過(guò)后的文件,我們來(lái)大致了解下文件布局構(gòu)造。
lib:項(xiàng)目依賴(lài)jar包。比較重要的是以kettle和pentaho打頭的jar包。支持整個(gè)工具的運(yùn)行。如下,也是我們比較關(guān)注源碼的地方。 ![]()
libswt: PDI采用了xul界面技術(shù)。所有界面的開(kāi)發(fā)采用了swt組件。該目錄,包含了所用到的jar包,并且根據(jù)操作系統(tǒng)平臺(tái)做到了差異化加載jar包的控制。 Plugins:插件目錄。系統(tǒng)開(kāi)放插件接口,可以對(duì)平臺(tái)插件做擴(kuò)展。
Pwd:存放集群化的配置文件和訪問(wèn)授權(quán)文件kettle.pwd Ui: 系統(tǒng)所有的界面xul文件和引用的圖片資源文件。 腳本:各種啟動(dòng)腳本。重點(diǎn)有四個(gè) spoot/ pen/ kitchen/ carte。這些腳本的作用,后面我們?cè)僭敿?xì)闡述。
到這里,有人或許已經(jīng)打開(kāi)了PDI的工作頁(yè)面,并根據(jù)教程,已經(jīng)對(duì)腳本有了基本概念。但這些不是我們的目的,我們要把項(xiàng)目從eclipse上啟動(dòng)起來(lái)。
新建java項(xiàng)目,筆者以pentaho_kettle 為項(xiàng)目名。
源碼項(xiàng)目是用ivy來(lái)管理的,為了減(我)少(也)麻(不)煩(會(huì)),我們把項(xiàng)目的源碼改成eclispe上的java工程項(xiàng)目。打開(kāi)源碼包里有幾個(gè)比較重要的目錄。
跟之前的lib的依賴(lài)包是一致的。好了我們?cè)诠こ汤锝⑾鄳?yīng)的源碼目錄,把源碼包相應(yīng)模塊下的src目錄內(nèi)容拷貝進(jìn)來(lái)??截愡M(jìn)來(lái)后,代碼會(huì)報(bào)錯(cuò),到上面提到的lib包下,我們把需要引用的jar包都考進(jìn)工程里,并構(gòu)建到工程中。
注意:已經(jīng)引入源碼的jar包就不要再引入了。另外swt包沒(méi)有了腳本對(duì)操作系統(tǒng)的判斷,自己根據(jù)自己的系統(tǒng)的類(lèi)型,手動(dòng)選擇引入吧。其他的目錄文件,如docs 、pwd、simple-jndi等雖然不會(huì)造成項(xiàng)目編譯不了,但是作為資源,缺失會(huì)報(bào)錯(cuò)的,所以還是要拷貝進(jìn)來(lái)的。
到這里,你的源碼搭建就OK了,如果你對(duì)腳本有了解的話(huà),不難看出spoon啟動(dòng)腳本,對(duì)應(yīng)的是Spoon.java.該類(lèi)的main方法便是整個(gè)工具的入口。這里看到腳本對(duì)啟動(dòng)參數(shù)有了部分的設(shè)置,我們?cè)趩?dòng)配置時(shí)加入該參數(shù)。
VM參數(shù) 寫(xiě)道-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=
啟動(dòng),OK!
大小: 126.7 KB 大小: 134.9 KB 大小: 129 KB 大小: 136.1 KB 大小: 161.1 KB 大小: 412.5 KB 大小: 295.8 KB查看圖片附件 |
|
|