1. 程式人生 > >資料遷移ETL之kettle一

資料遷移ETL之kettle一

好長時間沒有記錄技術文章了,正好最近負責資料遷移工作,就記錄一下。

公司近期做了大規模的支付系統架構改造,需要進行資料遷移,將現有生產資料遷移到新的系統庫中,在2013年底的時候曾經做過一次交易優化改造,把交易資料也做了一次資料遷移,當時使用的是springbatch來完成的。雖然成功完成遷移工作,但是在遷移過程中遇到了很多問題。

1.整理起來非常麻煩,各種job不太容易管理 。

2.不能進行很好的統計,如在遷移中不能隨時跟蹤遷移狀態,如已遷移的行數,當前每秒遷移行數。

3.不太容易進行優化, 當時多執行緒併發遷移未使用。

4.完全依賴於java,不夠靈活,移植性差。

對於這次系統架構改造要比上一次複雜的多,所以對遷移方案進行了從新的調研,最終選擇了開源的kettle來進行。

找了一些資料,簡單的描述一下吧:Kettle是一款國外開源的ETL工具,純java編寫,可以在WindowLinuxUnix上執行,綠色無需安裝,資料抽取高效穩定。Kettle這個ETL工具集,它允許你管理來自不同資料庫的資料,通過提供一個圖形化的使用者環境來描述你想做什麼,而不是你想怎麼做。Kettle中有兩種指令碼檔案transformationjobtransformation完成針對資料的基礎轉換,job則完成整個工作流的控制。作為Pentaho的一個重要組成部分,現在在國內專案應用上逐漸增多。

ETL即資料抽取(Extract)、轉換(Transform)、裝載(Load

)的過程.這裡就不做描述了。

我們來說說kettle吧,

環境:window7 64位、oraclekettlepdi-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

下圖為轉換的案例: