Kettle基本使用
Kettle的幾個子程序的功能和啟動方式
Spoon.bat 圖形界面方式啟動作業和轉換設計器。
Pan.bat 命令行方式執行轉換。
Kitchen.bat 命令行方式執行作業。
Carte.bat 啟動web服務,用於Kettle的遠程運行或集群運行。
Encr.bat 密碼加密。
轉換和作業
Kettle的Spoon.bat設計器用來設計轉換(Transformation)和作業(job)。
- 轉換主要是針對數據的各種處理,一個轉換里可以包含多個步驟(Step)。
- 作業是比轉換更高一級的處理流程,一個作業里包括多個作業項(Job Entry),一個作業項代表了一項工作,轉換也是一個工作項。
###輸入、輸出、轉換、過濾、字段選擇、連接###
Kettle資源庫—元數據
元數據的通用概念:
- “描述性數據”或“數據的數據”
ETL的元數據:
- 描述ETL要執行的任務
在Kettle里元數據的存儲方式:
- 資源庫
資源庫寶庫文件資源庫,數據庫資源庫
Kettle資源庫類型可以插件擴展
- XML文件
.ktr轉換文件的XML的根節點必須是<transformation>
.kjb作業XML的根節點是<job>
Kettle資源庫—資源庫類型
數據庫資源庫:
- 把Kettle的元數據串行化到數據庫中,如R_TRANSFORMATION表保存了Kettle轉換的名稱、描述等屬性。
- 在Spoon里創建和升級數據資源庫
文件資源庫:
在文件的基礎上的封裝,實現了org.pentaho.di.respositpory.Repository接口。
是Kettle4.0以后版本里增加的資源庫類型
不使用資源庫:
直接保存為 ktr 或 kjb 文件。
Kettle資源庫—如何選擇資源庫?
數據庫資源庫的缺點:
- 不能存儲轉換或作業的多個版本。
- 嚴重依賴於數據庫的鎖機制來防止工作丟失。
- 沒有考慮到團隊,開發人員不能鎖住某個作業自己開發。
文件資源庫的缺點:
- 對象(如轉換、作業、數據庫連接等對象)之間的關聯關系難以處理,所以刪除,重命名等操作會比較麻煩。
- 沒有版本歷史。
- 難以進行團隊開發。
不使用資源庫:
使用SVN進行文件版本控制。
參考:
Kettle企業資源庫:基於Apache Jackrabbit 的CMS系統。
Kettle資源庫—管理資源庫
ETL開發的幾個階段:
開發、測試、確認、發布
各個階段對應的資源庫:
開發資源庫、測試(確認)資源庫、發布資源庫
各階段推進
1.從開發資源庫帶測試資源庫:
注意命名規則。
由一個人統一發布,避免沖突。
兩種移植方法:斷開重連、導入/導出。
2.從測試(確認)資源庫到發布資源庫:導入/導出
不使用資源庫
SVN版本控制,測試打tag,發布建branch
Kettle資源庫—參數化
為什么要參數化:
在資源庫之間移植作業時,因為各個階段的環境不一樣,在作業里使用的數據庫連接等元數據不能硬編碼。
參數化的幾個方法:
- kettle.properties,文件位於java的user.home目錄下
- 自定義properties文件,通過 屬性文件輸入 步驟讀取。
- 使用參數表
參數表的結構
Environment parameter_name parameter_value valid_from valid_to
Dev host_name localhost 2011-01-01 2099-01-01
Test host_name 192.168.12.10 2011-01-01 2013-05-01
Test hose_name 192.168.12.11 2011-05-02 2099-01-01
Kettle運行方式—幾中運行方式
圖形化界面:Spoon
命令行:Pan、Kitchen
API:Kettle Java API 嵌入到其它應用
Kettle運行方式—Spoon
本地:在本地執行
遠程:在遠程服務執行,需要遠程服務器執行Carte。
- Carte是內嵌Jetty的 http server。
- Carte執行命令 carte localhost 80080
集群:在集群上執行,需要轉換里的某個步驟實現設置為集群方式運行。