kettle基礎概念的學習

Biexiansheng發表於2019-02-18

參考書籍: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的叢集。
 

 

待續......

相關文章