天天看點

Kettle spoon 工具實戰分享

今天給大家帶來一款ETL工具kettle spoon的實踐分享

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

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

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

作為Pentaho的一個重要組成部分,現在在國内項目應用上逐漸增多。

這次我就通過工作中使用到的情況來給大家做一個分享也算是我自己的總結。

Kettle spoon 工具實戰分享

Kettle spoon 工具實戰分享

因為我工作的性質,其防火牆和對資料的來源比較敏感,大緻上的流程是從外網的資料庫中通過防火牆抽取到邊界審計的資料庫中,再同步到開發庫使用開發後正式庫上線。

那麼抽取和同步的過程中使用的工具kettle spoon則是今天主要的分享内容,也是通過工作實踐的過程分享。

那麼spoon工具是什麼?具體是用來做什麼的?

前面我已經說了在抽取和同步中使用的工具。

首先我們要說一下ETL(資料倉庫技術)。ETL(Extract-Transform-Load)是用來描述将資料從來源段經過抽取(extract)、互動轉換(transform)、加載(load)至目的端的過程。ETL常用在資料倉庫,但其對象不限于資料倉庫。ETL是建構資料倉庫的重要一環,使用者從資料源抽取所需的資料,經過資料清洗,最終按照預先定義好的資料倉庫模型,将資料加載到資料倉庫中去。

那麼spoon則是一款強大的ETL工具。

關于ETL的具體内容,轉換過程不是我這次主要的分享内容,有興趣或工作有需求的小夥伴可以自行去網上查一查。在這裡我就簡單說一下ETL的架構。

ETL的架構:

在ETL架構中,資料的流向是從源資料流到ETL工具,ETL工具是一個單獨的資料處理引擎,一般會在單獨的硬體伺服器上,實作所有資料轉化的工作,然後将資料加載到目标資料倉庫中,如果要增加整個ETL過程的效率,則隻能增強ETL工具伺服器的配置,優化系統處理流程(一般可調的東西非常少)。IBM的datastage和Informatica的powercenter原來都是采用的這種架構。

ETL架構的優勢:

1.     ETL可以分擔資料庫系統的負載(采用單獨的硬體伺服器)

2.     ETL相對于EL-T架構(感興趣的小夥伴百度一下)可以實作更為複雜的資料轉化邏輯

3.     ETL采用單獨的硬體伺服器。.

4.     ETL與底層的資料庫資料存儲無關。

那麼在簡單了解ETL的内容後就開始我們這次的實踐分享。

*** spoon這款工具十分強大,但是我目前編寫的腳本相對于比較簡單,如果有興趣或工作中可以用到的小夥伴可以之後自行學習,也歡迎讨論。

1.      腳本的思路:我是需要兩張表的資料同步更新,是以需要進行兩張表的資料對比,如果審計資料表中與源資料表的資料量不一緻,則需要同步更新一次,那麼判斷資料不一緻的方法則是:在表輸入子產品中編寫sql語句,再進行合并記錄判斷并映射,如果不一緻則進行更新。把需要同步更新的表格一一進行編寫并儲存

Kettle spoon 工具實戰分享

表同步腳本編寫後需要建立新的作業,用來執行你所寫的腳本,以便他實時更新。在作業執行過程中最好不要一次進行多張表的更新,否則會非常占用記憶體,是以在這裡需要寫一個case,每次進行随機的執行一張同步表的腳本。執行作業就可以實時同步資料表啦!

Kettle spoon 工具實戰分享
Kettle spoon 工具實戰分享

在這裡編寫腳本的大概架構就呈現出來了,那麼在腳本運作的過程中,因為我這兩個資料庫分别是MySQL和Oracle ,是以會出現資料類型不一緻的問題,是以在腳本中又添加了字段選擇的子產品進行字段的處理。

下面就進行我使用的子產品一一介紹吧

2.      在這個過程中我用到的主要子產品是表輸入,字段選擇,值映射,合并記錄,插入/更新,Switch/Case。

Kettle spoon 工具實戰分享
Kettle spoon 工具實戰分享
Kettle spoon 工具實戰分享

1.      首先要在表輸入子產品中建立你需要連接配接的資料庫,可以根據不同的連接配接類型進行選擇,總之連接配接類型還是很多的;在此子產品中還能進行sql語句的編寫如下圖。

Kettle spoon 工具實戰分享
Kettle spoon 工具實戰分享

那這兩個表輸入子產品中寫的sql語句隻是想判斷一下兩張表的資料是否一緻。

2.那麼在字段選擇子產品中 就是選擇我所寫的sql語句中判斷的兩個标志

Kettle spoon 工具實戰分享

在合并記錄的子產品中則是設定表輸入的新資料與舊資料選擇,因為同步外網的資料,是以舊資料是我邊界審計的資料庫,新資料就是連接配接外網的資料庫。那麼兩張表會依據你設定的比對關鍵字和資料字段進行比較是否一緻。

Kettle spoon 工具實戰分享

3.在值映射子產品中可以選擇你要映射的原值和目标值進行替換如下圖:

Kettle spoon 工具實戰分享

4.這時候再使用一個字段選擇子產品,選擇上面的關鍵字

Kettle spoon 工具實戰分享

5.那麼在最後的表輸入中就可以選擇你要寫入的表 也就是舊資料的表,配上sql語句,如下圖

Kettle spoon 工具實戰分享

6.最後使用插入/更新子產品将整個表的内容全部插入

Kettle spoon 工具實戰分享

那麼關于這張表的更新腳本就完成啦

8.工作中是多張表的更新,是以就有了剛才的那個腳本。

Kettle spoon 工具實戰分享

這裡連接配接的當然是我要更新的資料庫了,寫了一個随機生成數的語句,每執行一次則随機更新一張表格。

Kettle spoon 工具實戰分享

9.那麼剛才建立的是轉換腳本,為了實時更新,我們則需要建立一個作業。

Kettle spoon 工具實戰分享

10.那麼在執行的子產品中 設定剛才建好的腳本

Kettle spoon 工具實戰分享

11.start和成功無需設定運作這個作業 就可以實時更新啦

Kettle spoon 工具實戰分享

那這次内容就到這裡。

我工作的地方現在用這個工具爬取網站上的天氣預報并傳到我們資料庫中,實作實時更新,然後交給開發那邊将網站上加入天氣預報的功能。。。簡直就是盜用别人的東西嘛,但是使用這個工具就是很簡單的操作就可以完成這個任務。

工作中如果需要用到這方面的同學可以試一試,真的是一款很強大的工具。歡迎大家一起讨論!

Ops

繼續閱讀