Kettle是Pentaho的一個組件,主要用於數據庫間的數據遷移,到我用過的4.2版,還不支持noSQL,不知道4.4是不是支持了。
Kettle自己有三個主要組件:Spoon,Kitchen,Pan。其中Spoon是一個圖形化的界面,用於windows的時候,先設置環境變量:pentaho_java_home,例如:C:\Program Files\Java\jdk1.7.0_25,其實就是你的java安裝目錄,1.6以上即可。windows下雙擊Spoon.bat就可以了,界面如下:
這里我建立了資源庫,其實可以用文件形式存儲,存儲的結構都是xml,但是我還是覺得建立一個資源庫比較好,以后看job等情況也比較簡單,因為數據表的可讀性比xml要好得多。建立資源庫和文件資源庫只需要把右上角的小加號點一下,就會出現如下如的界面:
選擇第一個就是建立數據庫版的資源庫,之后:
之后:
測試通過之后點擊OK就回到最開始的界面,這時候選擇test數據庫連接,然后出入你的工程(我是這么叫的)ID和name,這里要記住,因為以后kitchen調度的時候要輸入這個參數。
在接下來彈出的框中都點“是”,然后會出現這個界面:
這步會在你的用戶下建立很多表,所以最好單獨給資源庫建立一個用戶,當然這是在oracle下,mysql下和DB2下最好也采用同樣的方式,把資源庫和其他庫分開。檢查一下:
SQL> conn wings/wings@prism
已連接。
SQL> select count(1) from r_repository_log;
COUNT(1)
----------
0
SQL>
表已經建好了。回到最開始的界面,選擇test,點擊確定,然后就會出現登錄對話框,用戶密碼默認都是admin,以后可以自己改。
接下來就可以開始用這個工具了。
其實對於簡單的數據庫數據的抽取,基本只需要轉換和作業這兩種東西。下面就是建立一個轉換的步驟:
1 點擊文件-->新建-->轉換。
2 在左側的樹狀列表中選“主對象樹”,新建DB連接。步驟和上面建資源庫一樣。一個目標庫一個源庫。
3 在核心對象-->輸入這個地方拖出一個表輸入,在“輸出”目錄下拖出“表輸出”,在“轉換”處拖出一個字段選擇來,如圖:
每一個對象都可以雙擊修改屬性,下面以抽取world數據庫的city表為例。
雙擊表輸入,選擇數據庫連接,選擇源數據庫,然后點擊“獲取SQL查詢語句”,在彈出的對話框里進行選擇即可,之后會變成這樣:
下面點擊表輸出:
點擊字段選擇:
這樣,一個簡單的抽取數據的轉換就完成了。執行之,點擊上面的綠色開始按鈕。
我也處在學習中,希望可以把我的經驗分享給和我一樣的入門者。
下面是補充部分:
在一個Job或者一個trans建立好之后,就可以建立定時任務了。如果是DS,那么DS客戶端本身就支持schedule,但是Kettle因為沒有服務端和客戶端的概念,因此只有使用linux的crontab,其實Job本身也支持定時,但是你必須保證圖形界面一直開着,這樣並不如crontab那么好。在命令行里使用kettle很簡單,Job用kitchen調度,trans用pan調度。
下面是一個kitchen的調度命令:
bash /home/kettle/data-integration/kitchen.sh /rep kettle_demo /user username /pass passwd /level Minimal /dir /dirname /job jobname
rep那里寫自己的資源庫名稱。
trans和上面一樣,略有不同:
bash /home/kettle/data-integration/pan.sh /rep kettle_demo /user username /pass passwd /level Minimal /dir /dirname /trans transname