1.kettle簡介
Kettle是一款國外開源的ETL工具,純java編寫,可以在Windows、Linux、Unix上運行,數據抽取高效穩定。
Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺里,然后以一種指定的格式流出。
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
Kettle家族目前包括4個產品:Spoon、Pan、CHEF、Kitchen。
SPOON 允許你通過圖形界面來設計ETL轉換過程(Transformation)。
PAN 允許你批量運行由Spoon設計的ETL轉換 (例如使用一個時間調度器)。Pan是一個后台執行的程序,沒有圖形界面。
CHEF 允許你創建任務(Job)。 任務通過允許每個轉換,任務,腳本等等,更有利於自動化更新數據倉庫的復雜工作。任務通過允許每個轉換,任務,腳本等等。任務將會被檢查,看看是否正確地運行了。
KITCHEN 允許你批量使用由Chef設計的任務 (例如使用一個時間調度器)。KITCHEN也是一個后台運行的程序。
2.Kettle的下載與安裝
kettle的最新下載地址:https://community.hitachivantara.com/docs/DOC-1009855
kettle 8.2版本可以支持windows、linux和mac os操作系統
官方文檔:https://wiki.pentaho.com/display/EAI/.01+Introduction+to+Spoon
3.運行
kettle中的一個圖形用戶界面叫spoon,spoon可以設計和運行轉換和作業。
在windows中執行spoon.bat,在Lunix系統中執行spoon.sh;
Spoon是一個圖形設計工具,用來設計和測試數據交換處理流程,也可以通過命令行(終端)執行處理流程。
在spoon中設計作業和轉換,kettle提供兩種方式存儲:資源庫和文件;
如果你選擇資源庫,spoon第一次啟動時需要創建資源庫;選擇文件方法,作業保存文件是的擴展名是KJB,轉換文件的擴展名為KTR,為了簡化學習,下面教程采用后者。
點擊后等待一會兒,開啟較慢;打開后的界面如下:
4.HelloWorld 示例
Kettle提供了資源庫方式的方式來整合所有的工作,但是因為資源庫移植不方便,所以我們選擇沒有資源庫;
1)創建一個新的transformation,點擊 保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestTrans,kettle默認transformation文件保存后后綴名為ktr;
2)創建一個新的job,點擊 保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestJob,kettle默認job文件保存后后綴名為kjb;
4.1 轉換
在文件->新建裝換。
新建轉換后在左邊的主對象樹中建立DB連接用以連接數據庫。如圖所示:
建立數據庫連接的過程與其他數據庫管理軟件連接數據庫類似。
測試連接oracle數據庫
DB連接—>新建
輸入所要連接數據庫的信息,點擊測試看是否正確連接
注意:在數據庫鏈接的過程中,可能會報某個數據庫驅動連接找不到的異常。那是因為你沒有對應的數據庫鏈接驅動,請下載對應驅動后,放入kettle的lib文件夾,重啟即可
如果本地安裝着Oracle數據庫的話,可以從安裝路徑:E:\app\product\11.2.0\dbhome_1\jdbc\lib(我的路徑),一般選擇ojdbc6.jar。
4.2 新建“表輸入”
左邊面板選擇:核心對象—>輸入—>表輸入
雙擊拖過來的表,可以進行編輯;
選擇數據庫連接和編輯sql語句,在這一步可以點擊預覽,查看自己是否連接正確。確認無誤后,點擊確定。
4.3 通過“插入\更新”輸出到表
1.在左邊面板中選擇:核心對象à輸出->插入\更新 如圖所示:
2. 編輯插入更新:
首先:表輸入連接插入更新。
選中表輸入,按住shift鍵,拖向插入更新。
3.然后:雙擊插入更新,編輯它。編輯完成點擊確定
此處需要注意的是,輸入表,與輸出的表,都要真實存在。
4.啟動測試看執行效果
點擊執行按鈕
查看執行結果:
執行前表數據
可以看到,輸出表ID為1,2,3的age字段數據數據進行了更新,ID為4,5的name,age字段數據進行了更新,id為6的數據進行了插入
4.4 建立作業
使用作業可以定時或周期性的執行轉換,新建一個作業。並從左邊面板拖入start 和轉換。
雙擊start可以編輯,可以設置執行時間等等
點開裝換,可以設置需要執行的轉換任務,比如可以執行上面我們做的轉換,XXX.ktr
最后點擊運行即可。