Kettle 學習筆記


一直用SSIS做ETL,越來越感覺這玩意不是親生的.因此萌生換ETL工具的想法,不過Kettle社區版沒什么調度系統,貌似錯誤處理也不是很方便,且先了解吧. 本文簡略的記錄了整個軟件的使用流程.

開始

Kettle 的幾個子程序的功能和啟動方式

Spoon.bat: 圖形界面方式啟動作業和轉換設計器。
Pan.bat: 命令行方式執行轉換。
Kitchen.bat: 命令行方式執行作業。
Carte.bat: 啟動web服務,用於 Kettle 的遠程運行或集群運行。
Encr.bat: 密碼加密

資源庫

資源庫就是放置Metadata的地方了. 點CTRL -R可以顯示資源庫連接的窗口,沒有的新建一個就行. 看了下論壇,都推薦用文件資源庫 (使用了org.pentaho.di.repository.Repository 接口)
image

按 CTRL –E可以瀏覽所連接的資源庫中的Metadata

image
做的作業,轉換,連接 等保存后,直接可以在資源庫中讀取使用.

image

菜單項

這里可以設置kettle運行時候的一些默認參數

image

這里也是類似

image

簡單示例

在Input里面拖個 Dtata Grid,在Output里面拖個 Text file output

Data Grid里面輸入部分數據

image

在Data Grid組件上懸停,然后點擊紅框按鈕連接Text file output組件

image
雙擊 Text file output ,然后在Fields 頁面點擊Get Fields.獲取字段,然后在File頁中選擇輸出路徑

image

運行


最后點擊運行按鈕
image

在彈出來的對話框中直接點運行.

image

傳輸方式


再托一個 Table output.連接的時候問你傳輸方式,根據需要選一個即可

image

也可以右擊組件,選擇傳送方式

image

查看輸入/輸出的Metadata


右擊Text file output ,選擇 Show input fields 可以查看輸入的Metadata

image

雙擊Text file output,選擇連接,指定表名,然后復選 Specify database fields , 然后點擊Get fields按鈕

image

此時我們數據庫中並沒有testa這張表,此時點擊界面上的,SQL生成按鈕,會為我們自動生成建表語句

image

錯誤輸出

再拖一個文本輸出對象 Text file output 2 .然后連接 Table output , 連接選項,選擇 Error handling of step
image

隨后右擊Table output 點擊 Define error handing

image
設定相關字段名,此時改一下數據,如數據類型等,執行后就可以看到效果了.

image

常用控件

Select values

可以選擇字段,設置數值格式等,不需要的刪掉
image

image

Add constants

增加常量字段
image

Generate random value

生成隨機數,如果一想要一次生成多行數據,則右擊選擇,Change number of copies to start.(注意這里是生成多份哦.很可怕)

image

Filter rows

過濾記錄,不符合條件的扔掉,符合的輸出
image

Calculator

計算器.Calculation 里面有很多選項,選中以后指定對應字段即可

image

Merge Join

表格連接

image

Join Rows (cartesian product) 笛卡爾輸出

image

Table input

image

執行Select 語句,從數據庫中獲取數據.可以通過?或者${var}方式使用變量. 實際演示如下:

0x01 拖一個Get System Info 組件,然后設置一個變量,類型是命令行參數1

image

0x02 Table input 寫好語句后,勾選 Replace variables in script? ,然后在 Insert data from step 中選插入數據的步驟.(此處選擇前面創建的Get System Info)

image

注: 其中 Enable lazy conversion 選項是提升性能用的. 如果使用了,獲取數據不做數據轉換.用到的時候再轉 (延遲轉換用 rs.getBytes(int) 某則用 rs.getString(int))

0x03 在之個性步驟指定參數,就可以執行看到效果了.

image

執行

遠程執行

遠程執行需要執行Carte,他內嵌Jetty的http server .

0x01 執行命令,啟動http server
Carte 192.168.1.10 2333

0x02 在項目中新增子服務器

image

用戶名密碼都是cluster, 如果要修改可以至C:\data-integration\pwd\kettle.pwd 修改

image

0x03 執行

選則遠程執行,然后選擇我們剛才建立的服務器即可

image

群集

通過上面的步驟,我們可以多創建一台服務器.然后組合起來做成群集.其中有一台要設置為Master

0x01 建立群集

image

image

0x02 使用群集

右擊組件,然后選擇Clusterings,選擇剛才創建群集,

image

如果有組件使用了群集,那么執行的時候默認群集這個選項就選中了
image

命令行執行

參數值格式  /參數名:值 或 -參數名=值  (建議第一種)

0x01 新建一個作業

image

0x02 通過命令行執行

資源庫名稱 ResConn,作業名稱job ,路徑在根目錄下,其實不寫也可以,日志文件 log.txt,日志級別 basic (日志默認保存在 java.io.tmpdir的臨時目錄中文件名類似spoon_XXX.log)

.\Kitchen.bat /rep:ResConn /job:job /dir:/ /logfile:c:/log.txt /level:basic

另外可以直接把job依賴的文件導出成 zip,然后直接執行zip文件

kitchen /file:c:/job1.kjb /export:c:/a.zip
kitchen.bat /file:”zip:file:///c:/a.zip!job1.kjb”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM