一,理解開發環境與生產環境。
比如,在windows或mac下設計好流程之后,把該設計文件上傳到linux集群的機器上執行。那么,在windows下進行的工作即為開發環境,任務具體在linxu機器上執行即為生產環境。
二,Kettle轉換
轉換包括一個或多個步驟,步驟之間通過跳(hop)來連接。跳定義了一個單向通道,允許數據從一個步驟流向另一個步驟。在Kettle中,數據的單位是行,數據流就是數據行從一個步驟到另一個步驟的移動。
步驟:是轉換的基本組成部分,以圖標的形式出現。如(表輸入、文本文件輸出)。步驟將數據寫到與之相連的一個或多個輸出跳,再傳送到跳的另一端的步驟。這說明,跳是步驟之間帶箭頭的連線,其實是兩個步驟之間的,被稱為行集(rowset)的,數據行緩存。(行集的大小可以在轉換里定義)
一個步驟的數據發送可以設置為輪流發送和復制發送;輪流發送:將數據行依次發給每一個輸出跳;復制發送:將全部數據行發送給所有輸出跳。(shift + 鼠標左鍵 可以快速地新建一個跳)
在Kettle中,所有的步驟都以並發的方式執行,當轉換啟動后,所有的步驟都同時啟動,從它們的輸入跳中讀取數據,並把處理過的數據寫到輸出跳,直到輸入跳里不再有數據,就中止步驟的運行。當所有的步驟都中止了,整個轉換就中止了。數據行:一個數據行是零到多個字段的集合。
三,Kettle作業
作業包括一個或多個作業項,作業項以某種順序來執行。
作業項:與轉換中的步驟類似,作業項也以圖標的方式圖形化展示。作業項之間可以傳遞結果對象(result object)。結果對象里包含了數據行,它們不是以流的方式來傳遞的。而是等一個作業項執行完了,再傳遞給下一個作業項。默認情況下,所有的作業項都是以串行的方式執行的。
作業跳:作業之間的連線稱為作業跳。作業里每個作業項的不同運行結果決定了作業的不同執行路徑。對作業項的運行結果判斷如下:
1,無條件執行:不論上一個作業項執行成功與否,下一個作業項都會執行。標識為,黑色的連線,上面有一個鎖的圖標
2,當運行結果為真時執行:標識為,綠色的連線,上面有一個鈎號
3,當運行結果為假時執行:標識為,紅色的連線,上面有一個紅色的停止圖標
Kettle使用回溯算法來執行所有的作業項。即執行作業中的某條路徑的某個節點時,要依次執行這個節點的所有子路徑,直到沒有再可以執行的子路徑,就返回該節點的上一個節點,再反復該過程。
注意:在作業中定義的跳是控制流,在轉換中定義的跳是數據流。
四,Kettle工具
Spoon:圖形界面工具,快速設計和維護復雜的ETL工作流。
Kitchen:運行作業的命令行工具
Pan:運行轉換的命令行工具
Carte:輕量級的Web服務器,用來遠程執行轉換或作業
五,版本命名規則
GA(General Availability)releases:穩定發布版
Release candidates:候選版本 如, ...-RCxx
Milestone releases:最新的里程碑版本,里面都會有一些新功能 如,...-Mxx
Nightly builds:每天的build版本、最新的版本、也是最不穩定的版本
小結:Spoon是kettle的集成開發環境,也就是說,在Spoon里面設計好作業或者轉換。作業和轉換可以在圖形界面里執行,但是這只是在開發、測試和調試階段。在開發完成后,需要部署到實際運行環境中,在部署階段Spoon就很少用到了。