kettle基礎概念的學習


參考書籍:Pentaho Kettle Solutions中文版。由於最近不斷的使用kettle,隨着不斷深入使用,遇到的問題越來越多,發現腦子那點貨根本不夠用,所以根據閱讀把一些概念記錄一下,方便自己觀看,也希望讀看到帖子的有所幫助。

1、轉換。Kettle在運行轉換的時候,根據用戶的設置,可以將數據以不同的方式發送到多個數據流中。
注意:有兩種基本發送方式,即分發和復制,分發類似於發撲克牌,以輪流的方式將每行數據只發給一個數據流。復制是將一行數據發給所有數據流。

2、轉換。轉換以並行的方式執行,就需要一個可以串行執行的作業來處理這些操作(作業以串行執行)。

3、轉換。是ETL解決方法中最主要的部分,它處理抽取,轉換,加載各階段各種對數據行的操作。轉換包括一個或者多個步驟(step),如讀取文件,過濾輸出行,數據清洗或者將數據加載到數據庫。轉換里面的步驟通過跳(hop)來連接,跳定義了一個單向通道,允許數據從一個步驟向另一個步驟流動。在Kettle里面,數據的單位是行,數據流就是數據行從一個步驟到另一個步驟的移動。數據流的另一個同義詞就是記錄流。注意,轉換里面還可以包含注釋,注釋一個小的文本框,可以放在轉換流圖的任何位置。注釋的主要目的是使轉換文檔化,方便自己以后熟悉和學習。

4、轉換。轉換的注意點,步驟是轉換里面的基本組成部分,它以圖標的方式圖形化的展示。一個步驟有如下幾個關鍵特性。步驟需要有一個名字,且這個名字在轉換范圍里唯一。步驟將數據寫到與之相連的一個或者多個輸出跳(outgoing hops),再傳送到跳的另一端的步驟。對另一端步驟來說這個跳就是一個輸入跳(incoming hops),步驟通過輸入跳接受數據。大多數的步驟都可以有多個輸出跳。一個步驟的數據發送可以被設置為輪流發送和復制發送。輪流發送是將數據行依次發給每一個輸出跳(這種方式也稱為round robin),復制發送是將全部數據行發送給所有輸出跳。在運行轉換的時候,一個線程運行一個步驟和步驟的多份拷貝,所有的步驟的線程幾乎同時運行,數據行連續的流過步驟之前的跳。

5、轉換的跳。跳(hop)就是步驟之間帶箭頭的連線,跳定義了步驟之間的數據通路。跳實際上是兩個步驟之間的被成為行集(row set)的數據行緩存(行集的大小可以在轉換的設置里面定義)。當行集滿了,向行集寫數據的步驟將停止寫入,直到行集里又有了空間。當行集空了,從行集讀取數據的步驟停止讀取,直到行集里面又有了可讀的數據行。注意,當創建新跳的時候,需要記住跳在轉換里面不能循環。因為在轉換里面每個步驟都依賴前一個步驟獲取字段值。

6、轉換的並行。跳的這種基於行集緩存的規則允許每個步驟都由一個獨立的線程運行,這樣並發程度最高。這一規則也運行數據以最小消耗內存的數據流的方式來處理。在數據倉庫里面,我們經常要處理大量數據,所以這種並發低耗內存的方式也是ETL工具的核心需求。對於kettle,不可能定義一個執行順序,不可能也沒有必要確定一個起點和終點。因為所有步驟都以並發方式執行。當轉換啟動后,所有步驟都同時啟動,從他們的輸入跳中讀取數據,並把處理過的數據都寫到輸出跳,直到輸入跳里面不再有數據,就中止步驟的運行。當所有的步驟都中止了,整個轉換就中止了,也就是說,從功能的角度來看,轉換也有明確的起點和終點。注意,轉換里面的步驟幾乎是同時啟動的,所有如果想要一個任務沿着指定的順序執行,那么就要使用作業(job)了。

7、轉換的設計。當設計轉換的時候有幾個數據類型的規則需要注意。行級里所有行都應該有同樣的數據結構。就是說,當從多個步驟向一個步驟里面寫數據的時候,多個步驟輸出的數據行應該有相同的結構,即字段相同,字段數據類型相同,字段順序相同。字段元數據不會在轉換中發生變化。意思就是說,字符串不會自動截取長度以適應指定的長度,浮點數也不會自動取整以適應指定的精度。這些功能必須通過一些指定的步驟來完成。默認情況下,空字符串"",被認為與NULL相同。

8、作業(job)。作業按照一定的順序完成,因為轉換以並行方式執行的,就需要一個可以串行執行的作業來處理一系列按照順序完成的操作。一個作業包括一個或者多個作業項,這些作業項以某種順序來執行。作業執行順序由作業項之間的跳(job hop)和每個作業項的執行結構來決定。如同轉換,作業里面也可以包括注釋。

9、作業項。作業項是作業的基本構成部分。如同轉換的步驟,作業項也可以使用圖標的方式圖形化展示。作業項的注意點。新步驟的名字應該是唯一的,但是作業項可以有影子拷貝。這樣可以把一個作業項放在不同的位置。這些影子拷貝里的信息都是相同的,編輯一份拷貝,其他拷貝也會隨之修改。在作業項之間可以傳遞一個結果對象(result object)。這個結果對象里包含了數據行,它們不是以流的方式來傳遞的。而是等一個作業項執行完了,再傳遞給下一個作業項。默認情況下,所有的作業項都是以串行方式執行的,只是在特殊情況下,以並行方式執行。

10、kettle啟動腳本介紹(window版本)。

Spoon.bat,集成開發環境。提供了一個圖形化用戶界面,用於創建或者編輯作業或者轉換。Spoon也可以用於執行或者調試作業或者轉換,它也有性能監控的功能。
Kitchen.bat,作業的命令行運行程序,可以通過Sheel腳本來調用。Scheel腳本一般通過調度程序,如cron或者Windwos計划任務,來調度執行。
Pan.bat,轉換的命令運行程序,和Kitchen一樣通過Sheel腳本來調用。執行轉換而不是作業。
Carte.bat,輕量級的Http服務器(基於Jetty),后台運行,監聽Http請求來運行一個作業。Carte用於分布式和協調跨機器執行作業,也就是Kettle的集群。

 

待續......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM