天天看點

小程聊微服務-資料抽取那點事(二)

一、什麼是ETL

ETL(Extract-Transform-Load的縮寫,即資料抽取、轉換、裝載的過程),對于企業或行業應用來說,我們經常會遇到各種資料的處理,轉換,遷移,是以了解并掌握一種etl工具的使用,這裡介紹一個ETL工具Kettle,這個工具很強大,支援圖形化的GUI設計界面,然後可以以工作流的形式流轉,在做一些簡單或複雜的資料抽取、品質檢測、資料清洗、資料轉換、資料過濾等方面有着比較穩定的表現。

二、Kettle概念

Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運作,綠色無需安裝,資料抽取高效穩定。

Kettle 中文名稱叫水壺,該項目的主程式員MATT 希望把各種資料放到一個壺裡,然後以一種指定的格式流出。

Kettle這個ETL工具集,它允許你管理來自不同資料庫的資料,通過提供一個圖形化的使用者環境來描述你想做什麼,而不是你想怎麼做。

Kettle中有兩種腳本檔案,transformation和job,transformation完成針對資料的基礎轉換,job則完成整個工作流的控制。

Kettle可以在

http://kettle.pentaho.org/

網站下載下傳。

三、Kettle的使用

要實作實時的增量更新共有兩種方法:

1、通過觸發器。

在要抽取的表上建立需要的觸發器,一般要建立插入、修改、删除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器将變化的資料寫入一個臨時 表,抽取線程從臨時表中抽取資料,臨時表中抽取過的資料被标記或删除。觸發器方式的優點是資料抽取的性能較高,缺點是要求業務表建立觸發器,對業務系統有 一定的影響。

2.通過時間戳。

可以在兩邊資料庫的表裡插入了一列(用來取資料變動時的時間),然後做個計劃任務,設定每隔多少時間跑一次kettle,就行了。要實作“實時”,就隻能把時間間隔設小一點。

  • 通過時間戳方式

利用kettle工具,通過時間戳完成某表實時的增量更新。

利用子產品完成即可,如下簡圖:

image.png

準備一個實驗環境:

準備基本完成如下效果:

select t.*, t.rowid from EMP_ETL t

編寫時間戳ktr轉換過程,把原表中最大的hiredate作為變量,如下圖:

下面在“表輸入”環節中,使用傳遞過來的${MAXSJ}作為條件,完成向目标表插入資料,簡要流程如下:

執行轉換,完成資料插入,簡圖如下:

最後利用kettle形成的整體資料流如下圖所示:

下一篇文章,我将重點介紹基于Oracle的雙活方案