小程聊微服務(wù)-數(shù)據(jù)抽取那點事(二)

一、什么是ETL

ETL(Extract-Transform-Load的縮寫,即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程),對于企業(yè)或行業(yè)應(yīng)用來說,我們經(jīng)常會遇到各種數(shù)據(jù)的處理,轉(zhuǎn)換,遷移,所以了解并掌握一種etl工具的使用,這里介紹一個ETL工具Kettle,這個工具很強大,支持圖形化的GUI設(shè)計界面,然后可以以工作流的形式流轉(zhuǎn),在做一些簡單或復(fù)雜的數(shù)據(jù)抽取、質(zhì)量檢測、數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)過濾等方面有著比較穩(wěn)定的表現(xiàn)。

二、Kettle概念

Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定。
Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數(shù)據(jù)放到一個壺里,然后以一種指定的格式流出。
Kettle這個ETL工具集,它允許你管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個圖形化的用戶環(huán)境來描述你想做什么,而不是你想怎么做。
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job則完成整個工作流的控制。

Kettle可以在http://kettle.pentaho.org/網(wǎng)站下載。

三、Kettle的使用

要實現(xiàn)實時的增量更新共有兩種方法:

1、通過觸發(fā)器。
在要抽取的表上建立需要的觸發(fā)器,一般要建立插入、修改、刪除三個觸發(fā)器,每當源表中的數(shù)據(jù)發(fā)生變化,就被相應(yīng)的觸發(fā)器將變化的數(shù)據(jù)寫入一個臨時 表,抽取線程從臨時表中抽取數(shù)據(jù),臨時表中抽取過的數(shù)據(jù)被標記或刪除。觸發(fā)器方式的優(yōu)點是數(shù)據(jù)抽取的性能較高,缺點是要求業(yè)務(wù)表建立觸發(fā)器,對業(yè)務(wù)系統(tǒng)有 一定的影響。

2.通過時間戳。
可以在兩邊數(shù)據(jù)庫的表里插入了一列(用來取數(shù)據(jù)變動時的時間),然后做個計劃任務(wù),設(shè)置每隔多少時間跑一次kettle,就行了。要實現(xiàn)“實時”,就只能把時間間隔設(shè)小一點。

  • 通過時間戳方式

利用kettle工具,通過時間戳完成某表實時的增量更新。
利用模塊完成即可,如下簡圖:

image.png

準備一個實驗環(huán)境:
準備基本完成如下效果:
select t.*, t.rowid from EMP_ETL t

image.png

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

image.png

下面在“表輸入”環(huán)節(jié)中,使用傳遞過來的${MAXSJ}作為條件,完成向目標表插入數(shù)據(jù),簡要流程如下:

image.png

執(zhí)行轉(zhuǎn)換,完成數(shù)據(jù)插入,簡圖如下:

image.png

最后利用kettle形成的整體數(shù)據(jù)流如下圖所示:


image.png

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容