| 簡介Kettle是一款由純Java語言開發(fā)的免費開源的ETL工具,ETL即是Extract-Transform-Load的縮寫,用來描述將數(shù)據(jù)從來源端通過萃取(Extract)、轉(zhuǎn)換(Transform)、加載(Load)到目標(biāo)端的過程,通常用于數(shù)據(jù)清洗、數(shù)據(jù)遷移等.
 下載地址:https:///projects/pentaho/files/ GitHub地址:https://github.com/pentaho/pentaho-kettle Java doc地址:https://javadoc./ 文檔地址:https://help./ 轉(zhuǎn)換組件文檔:https://help./Documentation/8.2/Products/Data_Integration/Transformation_Step_Reference 作業(yè)組件文檔:https://help./Documentation/8.2/Products/Data_Integration/Job_Entry_Reference 安裝JDK安裝由于Kettle是由Java語言開發(fā),因此,我們在安裝Kettle之前需要安裝Java運行所需環(huán)境JDK window環(huán)境中的安裝這里不再多做說明,只需要下載JDK的exe可運行文件,一直點擊下一步即可安裝,安裝成功后再設(shè)置JAVA_HOME環(huán)境變量即可,非常簡單 在Linux環(huán)境中,我們首先需要下載JDK的安裝文件,本篇博客中安裝的版本為JDK1.8 解壓文件 tar -xvf jdk-8u144-linux-x64.tar.gz -C /usr/local/java
 配置環(huán)境變量vim /etc/profile,編輯加入JDK路徑 export JAVA_HOME=/usr/local/java/jdk1.8.0_144export PATH=$JAVA_HOME/bin:$PATH
 編譯 source /etc/profile
 查看是否安裝成功 [root@izbp1ad1jbc6ftdure2mpnz ~]# java -versionJava(TM) SE Runtime Environment (build 1.8.0_144-b01)Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
 Kettle安裝Kettle實戰(zhàn)100篇系列博客下載的版本是當(dāng)前最新版本Pentaho 8.3
 下載目錄地址:https:///projects/pentaho/files/Pentaho%208.3/client-tools/下的pdi-ce-8.3.0.0-371.zip 目前我們都是在Windows環(huán)境中使用Kettle的Spoon圖形化界面程序進行ETL的開發(fā), Kettle是用Java開發(fā)的純綠色版程序,因此我們只需要將下載的文件解壓到指定目錄即可, 我本機解壓目錄D:\Users\xiaoymin\Bin\data-integration\data-integration 8.3 解壓完成后,我們需要關(guān)注Kettle的幾個關(guān)鍵目錄和文件 Spoon:這是Kettle為我們提供的Spoon圖形化界面啟動程序,bat是在Windows環(huán)境下運行,sh則是在 類似Unix環(huán)境中運行,用于創(chuàng)建/編輯作業(yè)或者轉(zhuǎn)換Pan:我們通過Spoon創(chuàng)建了轉(zhuǎn)換或者作業(yè)后,如果是保存在本地磁盤的話,會生成響應(yīng)的文件,轉(zhuǎn)換文件是以.ktr結(jié)尾,而Pan是轉(zhuǎn)換的命令行執(zhí)行程序,Kitchen:作業(yè)文件以.kjb結(jié)尾,而Kitchen是作業(yè)的命令行執(zhí)行程序Carte:輕量級的HTTP服務(wù)器(依托于Jetty實現(xiàn)),后臺的方式運行,監(jiān)聽HTTP請求來運行一個作業(yè).Carte也可用于分布式和協(xié)調(diào)跨機器執(zhí)行作業(yè),即Kettle集群方式.lib:該目錄是Kettle依賴的第三方Jar包目錄,如果我們在使用Kettle進行數(shù)據(jù)庫導(dǎo)入的話,此時如果Kettle中沒有該數(shù)據(jù)庫的驅(qū)動Jar包時,我們需要將從網(wǎng)站上下載的驅(qū)動Jar放到該lib目錄下,然后重啟程序進行調(diào)試,否則會報錯(驅(qū)動類不存在)Encr:上面我們所說的創(chuàng)建數(shù)據(jù)庫連接時,我們需要輸入密碼,但是我們的密碼不能是明文,Encr工具為我們提供加密服務(wù)
 核心我們通過上面的步驟即可安裝成功Kettle,此時我們可以運行Spoon程序創(chuàng)建轉(zhuǎn)換或者作業(yè),初始化界面如下: 
 Kettle中兩個核心的組件服務(wù):轉(zhuǎn)換和作業(yè) 轉(zhuǎn)換:轉(zhuǎn)換(transformation)是ETL解決方案中最主要的部分,它負責(zé)抽取、轉(zhuǎn)換、加載各個階段的數(shù)據(jù)操作處理,轉(zhuǎn)換包括一個或多個步驟,如讀取文件、請求REST接口、插入數(shù)據(jù)、過濾數(shù)據(jù)等等,各個步驟之間通過Hop連接,Hop代表的是一個單向的數(shù)據(jù)流通道.例如在上一個步驟中我們定義了變量user,那么我們在后面的步驟中則可以通過${user}的方式來獲取變量的值,通過:文件 -> 新建 -> 轉(zhuǎn)換用以創(chuàng)建轉(zhuǎn)換作業(yè):作業(yè)(job)通常是一組轉(zhuǎn)換的集合,比如一個條件的判斷,參數(shù)的輪訓(xùn)執(zhí)行轉(zhuǎn)換,因為轉(zhuǎn)換的執(zhí)行只能執(zhí)行一次,遇上分頁接口的轉(zhuǎn)換我們需要借助于作業(yè)的方式輪訓(xùn)執(zhí)行轉(zhuǎn)換以階級數(shù)據(jù)的抽取工作,在作業(yè)中可以對轉(zhuǎn)換的執(zhí)行成功發(fā)送郵件服務(wù)等,通過:文件 -> 新建 -> 作業(yè)用以創(chuàng)建作業(yè).
 牛刀小試由于本系列博客是以實戰(zhàn)為主,因此很多Kettle的概念會以實戰(zhàn)中的篇幅中介紹,不單獨說明,當(dāng)然,對于某些核心的組件會單獨再博客中說明 需求我們訪問CSDN的博客RSS地址:https://blog.csdn.net/u010192145/rss/list,響應(yīng)內(nèi)容如下: 
 目前我們需要通過網(wǎng)絡(luò)訪問該RSS地址,然后解析XML最終輸出到Excel文件中,從XML中剝離出來id、標(biāo)題、發(fā)布時間、作者、簡介等字段 這個過程涉及到了請求RESTful地址,數(shù)據(jù)解析,數(shù)據(jù)轉(zhuǎn)換(輸出到Excel),因此我們通過Kettle中的轉(zhuǎn)換來實現(xiàn)此過程 實戰(zhàn)生成記錄 從Kettle的轉(zhuǎn)換核心對象樹中拖拽生成記錄組件,定義url地址,如下圖: 
 REST client組件 第二步是需要用到REST client組件,幫助我們發(fā)送地址請求獲取得到XML的內(nèi)容,如下圖: 
 GET data from XML 我們通過REST組件請求得到了XML內(nèi)容,因此我們需要使用GET data from XML組件來接收,接收后定義輸出映射字段 
 
 
 Excel 輸出 通過上一個組件的字段映射定義,接下來我們就可以將請求得到的XML結(jié)果循環(huán)輸出到Excel中了,選擇對象樹中的Excel 輸出組件,設(shè)置相關(guān)屬性,如下圖: 
 
 運行 整個轉(zhuǎn)換過程創(chuàng)建完后如下圖: 
 此時,我們點擊Spoon界面的運行按鈕,運行我們的轉(zhuǎn)換,輸出日志: 
 此時,我們打開已經(jīng)下載好的本地Excel文件,看是否將Xml的結(jié)果已經(jīng)導(dǎo)入到本地 
 至此,整個過程已經(jīng)完成了,如果你是開發(fā)人員的話,通過Kettle來完成此操作會大大提升你的工作效率 因為,假設(shè)您是一名Java開發(fā)人員,你需要用到的技術(shù)棧如下: HTTP客戶端請求技術(shù),例如:httpClient或者OKHttp或者JDK原生的HttpConnection組件Excel操作的相關(guān)技術(shù),例如POIXML操作的相關(guān)技術(shù),例如Dom4j
 但是通過Kettle來操作的話,上面的技術(shù)棧我們就可以省略了(雖然我都會:),無奈~~~) 看到這里,您是否想躍躍欲試呢? 
 |