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