ETL利器Kettle實戰應用解析系列一【Kettle使用介紹】
本系列文章主要索引如下:
本文主要閱讀目錄如下:
ETL(Extract-Transform-Load的縮寫,即資料抽取、轉換、裝載的過程),對於企業或行業應用來說,我們經常會遇到各種資料的處理,轉換,遷移,所以瞭解並掌握一種etl工具的使用,必不可少,這裡我介紹一個我在工作中使用了3年左右的ETL工具Kettle,本著好東西不獨享的想法,跟大家分享碰撞交流一下!在使用中我感覺這個工具真的很強大,支援圖形化的GUI設計介面,然後可以以工作流的形式流轉,在做一些簡單或複雜的資料抽取、質量檢測、資料清洗、資料轉換、資料過濾等方面有著比較穩定的表現,其中最主要的我們通過熟練的應用它,減少了非常多的研發工作量,提高了我們的工作效率,不過對於我這個.net研發者來說唯一的遺憾就是這個工具是Java編寫的。
1、Kettle概念
Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上執行,綠色無需安裝,資料抽取高效穩定。
Kettle 中文名稱叫水壺,該專案的主程式設計師MATT 希望把各種資料放到一個壺裡,然後以一種指定的格式流出。
Kettle這個ETL工具集,它允許你管理來自不同資料庫的資料,通過提供一個圖形化的使用者環境來描述你想做什麼,而不是你想怎麼做。
Kettle中有兩種指令碼檔案,transformation和job,transformation完成針對資料的基礎轉換,job則完成整個工作流的控制。
2、下載和部署
ž ž下載kettle壓縮包,因kettle為綠色軟體,解壓縮到任意本地路徑即可3、Kettle環境配置(有Java環境的直接忽略此章節)
3、1 安裝java JDK
1)首先到官網上下載對應JDK包,JDK1.5或以上版本就行;
2)安裝JDK;
3)配置環境變數,附配置方式:
安裝完成後,還要對它進行相關的配置才可以使用,先來設定一些環境變數,對於Java來說,最需要設定的環境變數是系統路徑變數path。
(1)要開啟環境變數的設定視窗。右擊“我的電腦”,在彈出的快捷選單中選擇“屬性”選項,進入“系統屬性”對話方塊,如圖所示。選擇“高階”標籤,進入“高階”選項卡,再單擊“環境變數”按鈕,進入“環境變數”對話方塊,如圖所示:
(2)在“Administrator的使用者變數”列表框中,選擇變數PATH,待其所在行變高亮後,單擊“編輯”按鈕,如圖所示。
(3)在彈出的“編輯系統變數”對話方塊中,將JDK安裝路徑下的bin目錄路徑設定到Path變數中,如圖所示。
編輯完後,單擊“確定”按鈕,進行儲存,環境變數Path的設定就正式完成。
注意:設定Path變數的路徑,必須是JDK安裝目錄中的bin目錄,有時候在JDK安裝目錄的同一層會有JRE的安裝目錄,因此請謹慎選取相關路徑,避免將路徑設定成JRE目錄下的bin目錄。
3、2 測試JDK配置是否成功
設定好環境變數後,就可以對剛設定好的變數進行測試,並檢測Java是否可以執行。
(1)單擊“開始”按鈕,選擇“執行”選項,在“執行”對話方塊中輸入cmd命令。
(2)之後單擊“確定”按鈕,開啟命令列視窗。
(3)在游標處輸入:javac命令,按下Enter鍵執行,即可看到測試結果
3、3 執行Kettle
ž進入到Kettle目錄,如果Kettle部署在windows環境下,雙擊執行spoon.bat或Kettle.exe檔案,出現如下介面: 這樣配置環境這一塊基本上就完成了。 4、Kettle使用及元件介紹 ž4.1 Kettle使用 Kettle提供了資源庫方式的方式來整合所有的工作,但是因為資源庫移植不方便,所以我們選擇沒有資源庫; 1)建立一個新的transformation,點選 儲存到本地路徑,例如儲存到D:/etltest下,儲存檔名為EtltestTrans,kettle預設transformation檔案儲存後後綴名為ktr; 2)建立一個新的job,點選 儲存到本地路徑,例如儲存到D:/etltest下,儲存檔名為EtltestJob,kettle預設job檔案儲存後後綴名為kjb; 4.2 元件樹介紹
|
Main Tree選單列出的是一個transformation中基本的屬性,可以通過各個節點來檢視。 DB連線:顯示當前transformation中的資料庫連線,每一個transformation的資料庫連線都需要單獨配置。 Steps:一個transformation中應用到的環節列表 Hops:一個transformation中應用到的節點連線列表 |
Core Objects選單列出的是transformation中可以呼叫的環節列表,可以通過滑鼠拖動的方式對環節進行新增。 Input:輸入環節 Output:輸出環節 Lookup:查詢環節 Transform:轉化環節 Joins:連線環節 Scripting:指令碼環節 |
類別 |
環節名稱 |
功能說明 |
Input |
文字檔案輸入 |
從本地文字檔案輸入資料 |
表輸入 |
從資料庫表中輸入資料 |
|
獲取系統資訊 |
讀取系統資訊輸入資料 |
|
Output |
文字檔案輸出 |
將處理結果輸出到文字檔案 |
表輸出 |
將處理結果輸出到資料庫表 |
|
插入/更新 |
根據處理結果對資料庫表機型插入更新,如果資料庫中不存在相關記錄則插入,否則為更新。會根據查詢條件中欄位進行判斷 |
|
更新 |
根據處理結果對資料庫進行更新,若需要更新的資料在資料庫表中無記錄,則會報錯停止 |
|
刪除 |
根據處理結果對資料庫記錄進行刪除,若需要刪除的資料在資料庫表中無記錄,則會報錯停止 |
|
Lookup |
資料庫查詢 |
根據設定的查詢條件,對目標表進行查詢,返回需要的結果欄位 |
流查詢 |
將目標表讀取到記憶體,通過查詢條件對記憶體中資料集進行查詢 |
|
呼叫DB儲存過程 |
呼叫資料庫儲存過程 |
|
Transform |
欄位選擇 |
選擇需要的欄位,過濾掉不要的欄位,也可做資料庫欄位對應 |
過濾記錄 |
根據條件對記錄進行分類 |
|
排序記錄 |
將資料根據某以條件,進行排序 |
|
空操作 |
無操作 |
|
增加常量 |
增加需要的常量欄位 |
|
Scripting |
Modified Java Script Value |
擴充套件功能,編寫JavaScript指令碼,對資料進行相應處理 |
Mapping |
對映(子轉換) |
資料對映 |
Job |
Sat Variables |
設定環境變數 |
Get Variables |
獲取環境變數 |
|
Main Tree選單列出的是一個Job中基本的屬性,可以通過各個節點來檢視。 DB連線:顯示當前Job中的資料庫連線,每一個Job的資料庫連線都需要單獨配置。 Job entries:一個Job中引用的環節列表 |
|
Job entries選單列出的是Job中可以呼叫的環節列表,可以通過滑鼠拖動的方式對環節進行新增。 每一個環節可以通過滑鼠拖動來將環節新增到主視窗中。 並可通過shift+滑鼠拖動,實現環節之間的連線。 |
類別 |
環節名稱 |
功能說明 |
Job entries |
START |
開始 |
DUMMY |
結束 |
|
Transformation |
引用Transformation流程 |
|
Job |
引用Job流程 |
|
Shell |
呼叫Shell指令碼 |
|
SQL |
執行sql語句 |
|
FTP |
通過FTP下載 |
|
Table exists |
檢查目標表是否存在,返回布林值 |
|
File exists |
檢查檔案是否存在,返回布林值 |
|
Javascript |
執行JavaScript指令碼 |
|
Create file |
建立檔案 |
|
Delete file |
刪除檔案 |
|
Wait for file |
等待檔案,檔案出現後繼續下一個環節 |
|
File Compare |
檔案比較,返回布林值 |
|
Wait for |
等待時間,設定一段時間,kettle流程處於等待狀態 |
|
Zip file |
壓縮檔案為ZIP包 |