Kettle 簡介
ETL(Extract-Transform-Load 的縮寫,即數(shù)據(jù)抽取、轉換、裝載的過程),對于數(shù)據(jù)開發(fā)人員來說,我們經常會遇到各種數(shù)據(jù)的處理,轉換,遷移,所以了解并掌握一種 ETL 工具的使用,必不可少,這里我們要學習的 ETL 工具就是 Kettle。
Kettle 是什么
Kettle 是一款國外開源的 ETL 工具,對商業(yè)用戶也沒有限制,純 Java 編寫,可以在 Window、Linux、Unix 上運行,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定。Kettle 中文名稱叫水壺,它允許管理來自不同數(shù)據(jù)庫的數(shù)據(jù),把各種數(shù)據(jù)放到一個壺里,然后以一種指定的格式流出。Kettle 中有兩種腳本文件,Transformation 和 Job, Transformation 完成針對數(shù)據(jù)的基礎轉換,Job 則完成整個工作流的控制。通過圖形界面設計實現(xiàn)做什么業(yè)務,并在 Job 下的 start 模塊,有一個定時功能,可以每日,每周等方式進行定時。
Kettle 的核心組件
| 名稱 | 功能 |
|---|---|
| Spoon | 通過圖形接口,允許你通過圖形界面來設計 ETL 轉換過程(Transformation) |
| Pan | 運行轉換的命令行工具 |
| Kitchen | 運行作業(yè)的命令行工具 |
| Carte | Carte 是一個輕量級別的 Web 容器,用于建立專用、遠程的 ETL Server |
- 作業(yè)和轉換可以在圖形界面里執(zhí)行,但這只適合在開發(fā)、測試和調試階段。在開發(fā)完成后,需要部署到生產環(huán)境中 Spoon 就很少用到了,Kitchen 和 Pan 命令行工具用于實際的生產環(huán)境。
- 部署生產階段一般需要通過命令行執(zhí)行,需要把命令行放到 Shell 腳本中,并定時調度這個腳本。
- Kitchen 和 Pan 工具是 Kettle 的命令行執(zhí)行程序,只是在 Kettle 執(zhí)行引擎上的封裝,它們只是解釋命令行參數(shù),調用并把這些參數(shù)傳遞給 Kettle 引擎。
- Kitchen 和 Pan 在概念和用法上都非常相近,這兩個命令的參數(shù)也基本是一樣的。唯一不同的是 Kitchen 用于執(zhí)行作業(yè),Pan 用于執(zhí)行轉換。
Kettle 概念模型
Kettle 的執(zhí)行分為兩個層次:Job(作業(yè),.kjb 后綴)和 Transformation(轉換,.ktr 后綴)

簡單地說,一個轉換就是一個 ETL 的過程,而作業(yè)則是多個轉換、作業(yè)的集合,在作業(yè)中可以對轉換或作業(yè)進行調度、定時任務等。
在實際過程中,寫的流程不能很復雜,當數(shù)據(jù)抽取需要多步驟時,需要分成多個轉換,在集成到一個作業(yè)里順序擺放,然后執(zhí)行即可。
目錄文件功能說明



下載及安裝
官網(wǎng)各個版本下載地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/
國內 Kettle 論壇網(wǎng):https://www.kettle.net.cn/
Kettle 是純 Java 編程的開源軟件,需要安裝 JDK,并配置環(huán)境變量,解壓后直接使用無需安裝。
需準備的其他東西:數(shù)據(jù)庫驅動,如將驅動放在 Kettle 根目錄的 bin 文件夾下面即可。
打開 Kettle 只需要運行 Spoon.bat (win)/ spoon.sh (Linux / macOS),即可打開 Spoon 圖形工具。
啟動 Kettle
如下圖,執(zhí)行 ./spoon.sh 命令

歡迎頁面

HelloWorld
把數(shù)據(jù)從 CSV 文件復制到 Excel 文件

CSV 文件輸入

將 「CSV 文件輸入」拖拽到右側的工作區(qū),雙擊進行編輯,瀏覽選擇準備好的測試文件,點擊「獲取字段」自動獲取 CSV 文件中表頭信息,輸入配置完成,下一步進行輸出配置。

Excel 輸出

將 「Excel 輸出」拖拽到右側的工作區(qū),雙擊進行編輯,這步比較簡單,瀏覽選擇輸出目錄和設置文件名,完成配置。

轉換文件
按住 shift + 鼠標左鍵可以建立連接,保存轉換配置

運行轉換

查看結果

總結
初步了解 Kettle 核心組件及其使用
- 作業(yè)和轉換可以在圖形界面里執(zhí)行,但這只適合在開發(fā)、測試和調試階段。在開發(fā)完成后,需要部署到生產環(huán)境中 Spoon 就很少用到了,Kitchen 和 Pan 命令行工具用于實際的生產環(huán)境。
- 部署生產階段一般需要通過命令行執(zhí)行,需要把命令行放到 Shell 腳本中,并定時調度這個腳本。
- Kitchen 和 Pan 工具是 Kettle 的命令行執(zhí)行程序,只是在 Kettle 執(zhí)行引擎上的封裝,它們只是解釋命令行參數(shù),調用并把這些參數(shù)傳遞給 Kettle 引擎。
- Kitchen 和 Pan 在概念和用法上都非常相近,這兩個命令的參數(shù)也基本是一樣的。唯一不同的是 Kitchen 用于執(zhí)行作業(yè),Pan 用于執(zhí)行轉換。
分步操作一個 HelloWrold 過程

歡迎關注公眾號:HelloTech,獲取更多內容