開源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

開源ETL工具Kettle(PDI)開發(fā)(一)認(rèn)識Kettle及源碼部署(比kettle好用的開源etl)

2、環(huán)境準(zhǔn)備

  • Java JDK 1.8
  • Maven, version 3
  • IDEA

3.源碼說明

下載源碼解壓后用IDEA打開,如圖

開源ETL工具Kettle(PDI)開發(fā)(一)認(rèn)識Kettle及源碼部署(比kettle好用的開源etl)

代碼項(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

開源ETL工具Kettle(PDI)開發(fā)(一)認(rèn)識Kettle及源碼部署(比kettle好用的開源etl)

打包好之后,assembliesclienttarget會有一個zip包,我們將它拷貝到我們想要的地方解壓,如圖

開源ETL工具Kettle(PDI)開發(fā)(一)認(rèn)識Kettle及源碼部署(比kettle好用的開源etl)

5.運(yùn)行Kettle

mysql鏈接庫準(zhǔn)備,下載mysql-connector-java-8.0.25,并拷貝到lib目錄中

在window環(huán)境 運(yùn)行spoon.bat

開源ETL工具Kettle(PDI)開發(fā)(一)認(rèn)識Kettle及源碼部署(比kettle好用的開源etl)

數(shù)據(jù)庫連接配置

菜單:工具向?qū)?chuàng)建數(shù)據(jù)庫連接向?qū)?/span>

如果沒有把mysql連接庫拷貝lib里,創(chuàng)建連接會報錯,下載拷貝后,重新運(yùn)行spoon.bat

開源ETL工具Kettle(PDI)開發(fā)(一)認(rèn)識Kettle及源碼部署(比kettle好用的開源etl)

三、關(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ā)的全部過程。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部