Kettle簡介
ETL(Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程),對於企業或行業應用來說,我們經常會遇到各種數據的處理,轉換,遷移,所以了解並掌握一種etl工具的使用,必不可少。
Kettle是一款國外開源的ETL工具(新名稱是PDI ,PDI的全稱是Pentaho Data Integeration),純java編寫,可以在Window、Linux、Unix上運行。Kettle支持圖形化的GUI設計界面,然后可以以工作流的形式流轉,在做一些簡單或復雜的數據抽取、質量檢測、數據清洗、數據轉換、數據過濾等方面有着比較穩定的表現,其中最主要的我們通過熟練的應用它,減少了非常多的研發工作量,提高了我們的工作效率。
Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺里,然后以一種指定的格式流出。Kettle允許:管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。Kettle中有兩種腳本文件,transformation和job:transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
1、Kettle的下載與安裝:
下載地址: https://sourceforge.net/projects/pentaho/files/latest/download , 下載的文件名、形如:pdi-ce-xxxx(版本號).zip
kettle無需安裝,直接解壓zip文件到指定的文件夾即可。 在Lunix操作系統上,需要執行以下腳本: cd Kettle ,chmod +x *.sh
kettle的運行需要jre1.5及以上版本(可通過oracle官網免費下載)。
kettle中的一個圖形用戶界面叫spoon,spoon可以設計和運行轉換和作業。在windows中執行spoon.bat,在Lunix系統中執行spoon.sh;Spoon是一個圖形設計工具,用來設計和測試數據交換處理流程,也可以通過命令行(終端)執行處理流程。在spoon中設計作業和轉換,kettle提供兩種方式存儲:資源庫和文件。如果你選擇資源庫,spoon第一次啟動時需要創建資源庫;選擇文件方法,作業保存文件是的擴展名是KJB,轉換文件的擴展名為KTR
2、Kettle實戰:
Kettle提供了資源庫方式的方式來整合所有的工作,但是因為資源庫移植不方便,所以我們選擇沒有資源庫;
1)創建一個新的transformation,點擊 保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestTrans,kettle默認transformation文件保存后后綴名為ktr;
2)創建一個新的job,點擊 保存到本地路徑,例如保存到D:/etltest下,保存文件名為EtltestJob,kettle默認job文件保存后后綴名為kjb;
操作:點擊菜單文件->新建轉換。
新建轉換后在左邊的主對象樹中建立DB連接用以連接數據庫。如圖所示:
3、建立數據庫連接:該過程與其他數據庫管理軟件連接數據庫類似。
注意:在數據庫鏈接的過程中,可能會報某個數據庫連接找不到的異常。那是因為你沒有對應的數據庫鏈接驅動,請下載對應驅動后,放入kettle的lib文件夾。
4、簡單的數據表插入\更新
(1)新建:表輸入:
在左邊的面板中選擇“核心對象”,在核心對象里面選擇“輸入->表輸入”,用鼠標拖動到右邊面板。如圖所示:
雙擊拖過來的表,可以編輯表輸入。
選擇數據庫連接和編輯sql語句,在這一步可以點擊預覽,查看自己是否連接正確。
(2)通過“插入\更新”輸出到表。
在左邊面板中選擇核心對象、選擇“輸出->插入\更新”如圖所示:
編輯插入更新:
首先:表輸入連接插入更新。
選中表輸入,按住shift鍵,拖向插入更新。
然后:雙擊插入更新,編輯它。
到這里基本上,這個轉換就要做完了.
可以點擊運行查看效果,看是否有誤,這個要先保存了才能運行,可以隨意保存到任何一個地方。
5、使用作業控制上面裝換執行。
使用作業可以定時或周期性的執行轉換,新建一個作業。並從左邊面板拖入start 和轉換。
雙擊start可以編輯,可以設置執行時間等等
點開裝換,可以設置需要執行的轉換任務,比如可以執行上面我們做的轉換,比如:h1.ktr
最后點擊運行即可。
到這里,一個簡單的通過作業調度的kettle就算做完了。
----------------------------------------------------------------------------------------------------
[常見問題]
【問題1】連接MySQL出錯“Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.”
【解決對策】:這個軟件需要Java的編輯環境,缺少一個Java包--mysql-connector-java-5.1.40-bin,加在軟件目錄的\data-integration\lib下就可以了。
【問題2】Unable to close prepared statement after determining SQL layout.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1
【解決對策】去mysql官網下載最新的jar驅動包 然后更新就行: https://dev.mysql.com/downloads/connector/j/5.1.html
選擇平台,下載(mysql-connector-java-5.1.33.tar.gz)
最后更新到dbvis jar包到相應的目錄下就行,刪除原來的,重啟