資料遷移ETL之kettle一
好長時間沒有記錄技術文章了,正好最近負責資料遷移工作,就記錄一下。
公司近期做了大規模的支付系統架構改造,需要進行資料遷移,將現有生產資料遷移到新的系統庫中,在2013年底的時候曾經做過一次交易優化改造,把交易資料也做了一次資料遷移,當時使用的是springbatch來完成的。雖然成功完成遷移工作,但是在遷移過程中遇到了很多問題。
1.整理起來非常麻煩,各種job不太容易管理 。
2.不能進行很好的統計,如在遷移中不能隨時跟蹤遷移狀態,如已遷移的行數,當前每秒遷移行數。
3.不太容易進行優化, 當時多執行緒併發遷移未使用。
4.完全依賴於java,不夠靈活,移植性差。
對於這次系統架構改造要比上一次複雜的多,所以對遷移方案進行了從新的調研,最終選擇了開源的kettle來進行。
找了一些資料,簡單的描述一下吧:Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上執行,綠色無需安裝,資料抽取高效穩定。Kettle這個ETL工具集,它允許你管理來自不同資料庫的資料,通過提供一個圖形化的使用者環境來描述你想做什麼,而不是你想怎麼做。Kettle中有兩種指令碼檔案,transformation和job,transformation完成針對資料的基礎轉換,job則完成整個工作流的控制。作為Pentaho的一個重要組成部分,現在在國內專案應用上逐漸增多。
ETL即資料抽取(Extract)、轉換(Transform)、裝載(Load
我們來說說kettle吧,
環境:window7 64位、oracle、kettle(pdi-ce-5.1.0.0-752)、jdk
下載後進行解壓縮(綠色無需安裝),解壓縮後的目錄中找到Spoon.bat檔案(window下適用),這是啟動程式的檔案。右擊編輯Spoon.bat檔案來看看啟動引數,找到下面這一行預設情況下:
if"%PENTAHO_DI_JAVA_OPTIONS%"=="" setPENTAHO_DI_JAVA_OPTIONS="-Xmx1024m" "-XX:MaxPermSize=512m" ,JVM的記憶體設定,可修改這兩個數值來達到最佳的記憶體分配的最佳效果,根據個人的機器配置來定吧。
執行spoon.bat後會出現一個圖形頁面,是不是有種眼前一亮的感覺。我們來見識一下吧。
Spoon--轉換過程設計器
GUI工作,用來設計資料轉換過程,建立的轉換可以由Pan來執行,也可以被Chef所包含,作為作業中的一個作業項。
一、Kettle UI介紹:
1. 作業:在一個作業下包含多個轉換,作業建立後所產生的副檔名為. Kjb
下圖為作業的案例:
2. 轉換:一個轉換可以屬於多個作業,轉換建立後所產生的副檔名為. Ktr
下圖為轉換的案例: