2概述
設計模塊最主要的操做分爲: 轉換和做業
選擇轉換和做業後就能夠選擇對應主對象樹和核心對象
主對象樹大同小異
核心對象是不一樣的
好比轉換須要用到的CSV表輸入, 表輸入等都在這裏能夠選擇
而做業的核心對象是:
2.1 轉換
轉換是ETL解決方案中最主要的部分, 它處理抽取、轉換、加載各階段各中對數據行的操做。轉換1/N個步驟。
如圖, 下面是一個轉換的過程
圖中每一個框都是一個步驟(step),而鏈接框的線就是所謂的跳(hop).
跳定義了一個單向通道, 容許數據由一個通道向另外一個通道移動。在Kettle中數據的
單位是行。
步驟
步驟是轉換的基本組成部分(圖中的框框) 它有如下關鍵屬性:
1 每一個步驟都有一個名字,在轉換範圍內惟一
2 每一個步驟都會讀,寫數據行 (惟一的例外是生成記錄的步驟)
3 步驟將數據寫到與之相連的一個或多個輸出跳, 再傳送到跳的另外一端的步驟. 對另外一端步驟來講, 這個跳就是一個輸入 跳, 步驟經過輸入跳接受數據
4 大多數的步驟均可以有多個輸出跳.
【一個步驟的數據發送(輸出)能夠設置爲輪流發送和複製發送。輪流發送是將數據行依次發給每個輸出跳(每一個輸出得到的輸出合起來纔是完整數據),複製發送是將所有數據發給全部輸出跳(每一個輸出都同樣,是所有的數據)。】
在建立跳的時候能夠選擇:
5 運行轉換時,一個線程運行一個步驟和步驟的多份copy,全部步驟的線程幾乎
同時運行,數據行連續地流過步驟之間的跳。
除了上面標準的屬性,具體每一個步驟根據其類型還有不一樣的區別。再也不贅述。
轉換的跳
跳(hop)就是步驟之間帶箭頭的連線,定義了步驟之間的數據通路。跳實際是兩個步驟之間被稱爲行集的數據行緩存。
當行集滿了,向行集寫數據的步驟將中止寫入,知道行集裏又有了空間。當行集空了,從行集讀取數據的步驟中止讀取,直到行集裏有了可讀的數據行。
注意,跳在轉換裏不能循環。
並行
跳的這種基於行集緩存的規則容許每一個步驟都由
一個獨立的線程運行,這樣併發程度最高。
這一規則也徐容許數據以最小消耗內存的數據流方式來處理.
對於Kettle不可能定義一個執行順序。全部步驟都以併發的方式執行:
當轉換啓動後,全部步驟同時啓動,從他們的輸入跳中讀取數據,並把處理過的數據寫到輸出跳,直到輸入跳再也不有數據,就停止步驟的運行。直到數據從新進來.
當全部的步驟都停止了,整個轉換就停止了.
由於全部步驟都同時執行,從這個意義上來講, 轉換是沒有起點和終點的. 若是要一個任務沿着指定的順序執行,就要使用後面說的"做業".
數據行
數據以數據行的形式沿着步驟移動。一個數據行是多個字段的集合,字段包括如下幾種數據類型。
數據轉換
顯式數據轉換: 在字段選擇步驟中選擇轉換的數據類型.
隱私轉換就是將數據類型數據寫入數據庫的varcahr類型字段.
好比:
2.2 做業
讓一些操做按照必定的順序完成(如運行中發送錯誤的應對操做, 如驗證庫表存在等)
由於
轉換以並行方式執行, 就須要一個能夠
串行執行的
做業來處理這些操做.
一個做業包括一到多個做業項, 這些做業項以某種順序來執行. 做業執行順序由做業項之間的跳和每一個做業項執行結果來定.
做業項
做業項是做業的基本構成. 如同轉換的步驟.
不一樣之處:
1 新步驟名字是惟一的. 但做業項能夠有影子拷貝. 這樣就能夠把一個做業項放在多個不一樣的位置. 這些影子拷貝是相同的,修改了其中一份, 其他的都隨之改變.
2 做業項傳遞的是結果對象. 結果對象包含了數據行. 他們不是以流的方式實時傳遞. 而是等一個做業項執行完畢,再傳遞給下一個做業項.
3 默認狀況,全部做業項都以串行執行. 值在特殊狀況下才以並行執行.
由於做業順序執行做業項, 因此必須定義一個起點(叫作開始的做業項, 而且只能有一個).
做業跳
做業項之間的鏈接線, 定義了做業的執行路徑.
每一個做業項的不一樣運行結果決定了做業後續的不一樣執行路徑.
* 無條件執行: 黑色帶鎖圖標表示. 不管上一個做業
項成功與否都執行下一個做業項.
* 爲真時執行: 綠色打勾圖標表示. 上一個做業項執行爲真, 才執行才能夠做業項目.(通常須要無錯誤執行)
* 爲假時執行: 紅色中止圖標表示. 上一個做業項執行爲假或者沒有成功執行時,執行下一個做業項.
直接點擊便可切換類型:
多路徑和回溯
Kette使用一種回溯算法來執行做業裏的素有做業項, 並且做業項的執行結果(真/假)也同事決定執行路徑.
回溯算法: 假設執行到一條路徑的某個節點時, 依次執行這個節點的全部子路徑, 直到沒有再能夠執行的子路徑, 就退回該節點的上一個節點, 如此反覆.
舉例:
並行執行
一個做業項也能夠併發的方式執行後面的全部做業項:
做業項結果
做業項結果包含如下信息:
一組數據行
一組文件名...
錯誤的行數和數量..
等..
2.3 轉換或做業的元數據
2.4 數據庫鏈接, 資源庫
略.