開源ETL工具Kettle(PDI)開發(fā)(一)認(rèn)識Kettle及源碼部署(比kettle好用的開源etl)
一、ETL是什么?
1.ETL簡介
ETL是將業(yè)務(wù)系統(tǒng)的數(shù)據(jù)經(jīng)過抽取、清洗轉(zhuǎn)換之后加載到數(shù)據(jù)倉庫的過程,目的是將企業(yè)中的分散、零亂、標(biāo)準(zhǔn)不統(tǒng)一的數(shù)據(jù)整合到一起,為企業(yè)的決策提供分析依據(jù)。 ETL是BI(商業(yè)智慧或商務(wù)智能,指用現(xiàn)代數(shù)據(jù)倉庫技術(shù)、線上分析處理技術(shù)、數(shù)據(jù)挖掘和數(shù)據(jù)展現(xiàn)技術(shù)進(jìn)行數(shù)據(jù)分析以實(shí)現(xiàn)商業(yè)價值)項(xiàng)目重要的一個環(huán)節(jié)。 通常情況下,ETL設(shè)計的好壞直接關(guān)接到BI項(xiàng)目的成敗,在BI項(xiàng)目中ETL會花掉整個項(xiàng)目至少1/3的時間。
E:Extract 數(shù)據(jù)的抽?。?/p>
T:Transform 數(shù)據(jù)的清洗轉(zhuǎn)換
L:Load 速度的加載
2. ETL 與ELT
ETL所描述的過程,一般常見的作法包含ETL或是ELT(Extract-Load-Transform),并且混合使用。通常越大量的數(shù)據(jù)、復(fù)雜的轉(zhuǎn)換邏輯、目的端為較強(qiáng)運(yùn)算能力的數(shù)據(jù)庫,越偏向使用ELT,以便運(yùn)用目的端數(shù)據(jù)庫的平行處理能力。
二、認(rèn)識kettle
1. 發(fā)展歷程
Kettle是一個Java編寫的ETL工具,主作者是Matt Casters,2003年就開始了這個項(xiàng)目,。
2005年12月,Kettle從2.1版本開始進(jìn)入了開源領(lǐng)域,一直到4.1版本遵守LGPL協(xié)議,從4.2版本開始遵守Apache Licence 2.0協(xié)議。
Kettle在2006年初加入了開源的BI公司Pentaho, 正式命名為:Pentaho Data Integeration,簡稱“PDI”。
自2017年9月20日起,Pentaho已經(jīng)被合并于日立集團(tuán)下的新公司: Hitachi Vantara。
2.架構(gòu)設(shè)計
Kettle是一個組件化的集成系統(tǒng),包括如下幾個主要部分:
1.Spoon:圖形化界面工具(GUI方式),Spoon允許你通過圖形界面來設(shè)計Job和Transformation,可以保存為文件或者保存在數(shù)據(jù)庫中。
也可以直接在Spoon圖形化界面中運(yùn)行Job和Transformation,
2.Pan:Transformation執(zhí)行器(命令行方式),Pan用于在終端執(zhí)行Transformation,沒有圖形界面。
3.Kitchen:Job執(zhí)行器(命令行方式),Kitchen用于在終端執(zhí)行Job,沒有圖形界面。
4.Carte:嵌入式Web服務(wù),用于遠(yuǎn)程執(zhí)行Job或Transformation,Kettle通過Carte建立集群。
5.Encr:Kettle用于字符串加密的命令行工具,如:對在Job或Transformation中定義的數(shù)據(jù)庫連接參數(shù)進(jìn)行加密。
三、Kettle源碼下載及部署
1.源碼地址
github上面kettle的源碼下載地址:https://github.com/pentaho/pentaho-kettle
2、環(huán)境準(zhǔn)備
- Java JDK 1.8
- Maven, version 3
- IDEA
3.源碼說明
下載源碼解壓后用IDEA打開,如圖
代碼項(xiàng)目結(jié)構(gòu)
- assemblies: 項(xiàng)目分發(fā)歸檔文件在此模塊下生成
- core: 核心實(shí)現(xiàn)
- dbdialog: 數(shù)據(jù)庫”對話框
- ui: 用戶界面
- engine: PDI引擎
- engine-ext: PDI引擎擴(kuò)展
- plugins: PDI核心插件
- integration:測試
4.源碼打包
執(zhí)行mvn clean install -DskipTests
打包好之后,assembliesclienttarget會有一個zip包,我們將它拷貝到我們想要的地方解壓,如圖
5.運(yùn)行Kettle
mysql鏈接庫準(zhǔn)備,下載mysql-connector-java-8.0.25,并拷貝到lib目錄中
在window環(huán)境 運(yùn)行spoon.bat
數(shù)據(jù)庫連接配置
菜單:工具向?qū)?chuàng)建數(shù)據(jù)庫連接向?qū)?/span>
如果沒有把mysql連接庫拷貝lib里,創(chuàng)建連接會報錯,下載拷貝后,重新運(yùn)行spoon.bat
三、關(guān)于Kettle二次開發(fā)的設(shè)想
kettle工具已經(jīng)很優(yōu)秀了,但是我們?nèi)绻嬲龖?yīng)用到我們項(xiàng)目中,個人覺得還有有些達(dá)不到要求,在開源基礎(chǔ)能否進(jìn)行二次開發(fā),
1.spoon有沒有web版?
2.kettle引擎提供API方式嗎?
3.作業(yè)調(diào)度這里官方建議用操作系統(tǒng)的作業(yè)調(diào)度
在開源基礎(chǔ)上想實(shí)現(xiàn)web版,有興趣的可以一塊參與哦,我也會記錄我二次開發(fā)的全部過程。