Kettle基本概念 之 Kettle設計模塊


轉換

轉換(transformtion)是ETL解決方案中最主要的部分,它處理抽取、轉換、加載各階段各種對數據的操作。

轉換包括一個或多個步驟(step),如讀取文件、過濾輸出行、數據清洗或將數據加載到數據庫。

轉換里的步驟通過跳(hop)來連接,跳定義了一個單向通道,允許數據從一個步驟向另一個步驟流動。

除步驟和跳,轉換還包括了注釋(note),注釋是一個小的文本框,可以放在轉換流程圖的任何位置。注釋的主要目的是使轉換文檔化。


一個簡單轉換的例子

步驟

步驟是轉換里的基本組成部分,“表輸入”和“文件文件輸出”顯示了兩個步驟。

轉換的跳

跳(hop)就是步驟之間帶箭頭的連線,跳定義了步驟之間的數據通路。

注意: 跳在轉換里不能循環。因為在轉換里每個步驟都依賴前一個步驟獲取字段值。

並行

當轉換啟動后,所有步驟都同時啟動,從它們的輸入跳中讀取數據,並把處理過的數據寫到輸出跳,直到輸入跳里不再有數據,就路上步驟的運行。

轉換里的步驟幾乎是同時啟動的,所以不可能判斷出哪個步驟是第一個啟動的步驟。

如果想要一個任務沿着指定的順序插,那么就要使用“作業”了。

數據行

數據以數據行的形式沿着步驟移動。一個數據行是零到多個字段的集合,字段包括下面幾種數據類型:

  • String: 字符類型
  • Number: 雙精度浮點數
  • Integer: 帶符號長整型
  • BigNumber: 任意精度數值
  • Date: 帶毫秒精度的日期時間值
  • Boolean: 取值為true和false的布爾值
  • Binary: 二進制字段可以包括圖形、聲音、視頻及其他類型的二進制數據

數據轉換

顯式轉換數據類型,如通過“字段選擇”步驟中直接選擇要轉換的數據類型。

隱式轉換數據類型,如將數值類型數據寫入數據庫中的varchar類型字段。

常見數據類型轉換有:

  • Date和String的轉換
  • Numberic和String的轉換
  • Boolean和String的轉換
  • String和Boolean的轉換
  • Integer和Date的轉換
  • Date和Integer的轉換

作業

大多數ETL項目都需要完成各種各樣的操作,而且這些操作要按照一定順序完成。因為轉換以並行方式執行,就需要一個可以串行執行的作業來處理這些操作。

一個作業包括一個或多個作業項,這些作業項以某種順序來執行。作業執行順序由作業項之間的跳(job hop)和每個作業項的執行結果來決定。

一個典型的加載數據倉庫的作業

作業項

作業項是作業的基本構成部分。如同轉換的步驟,作業項也可以使用圖標的方式圖形化展示 。

默認情況下,所有的作業項都是以串行方式執行的,只是在特殊的情況下,以並行方式執行。

因為作業順序執行作業項,所以必須定義一個地點。有一個叫“開始”的作業項就定義了這個起點。一個作業只能定義一個開始作業項。

作業跳

作業的跳是作業項之間的連接線,它定義了作業的執行路徑。

作業項的運行結果的判斷如下:

  • 無條件執行(黃色帶鎖連接線)


    黃色帶鎖連接線
  • 當運行結果為真是執行(綠色對鈎號連接線)


    綠色對鈎號連接線
  • 當運行結果為假時執行(紅色停止圖標連接線)


    紅色停止圖標連接線

多路徑和回溯

回溯算法就是:假設掃行到了圖里的一條路徑的某個節點時,要依次掃行這個節點的所有子路徑,直到沒有再可以執行的子路徑,就返回該節點的上一節點,再反復這個過程。

使用回溯算法串行執行多個路徑

上圖A、B、C三個作業項的執行順序如下:

  • 首先 “開始” 作業項搜索所有下一個節點作業項,找到了 “A” 各 “C”
  • 執行 “A”
  • 搜索 “A” 后面的作業項,發現了 “B”
  • 執行 “B”
  • 搜索 “B” 后面的作業項,沒有找到任何作業項
  • 回到 “A” ,也沒有發現其他作業項
  • 回到Start,發現另一個要執行的作業項 “C”
  • 執行 “C”
  • 搜索 “C” 后面的作業項,沒有找到任何作業項
  • 回到Start,沒有找到任何作業項
  • 作業結束

因為沒有定義執行順序,所以上面例子的執行順序除了ABC,還可以有CAB。

並行執行

有時候需要將作業項並行執行。一個作業項可以並發的方式執行它后面的所有作業項。如下圖:

並行執行的作業項

注意:通過“Run Next Entries in Parallel” 設置

作業項結果

作業執行結果不僅決定了作業的執行路徑,而且還向下一個作業項傳遞了一個結果對象。

結果對象包括了下面一些信息:

  • 一組數據行
  • 一組文件名
  • 讀、寫、輸入、輸出、更新、刪除、拒絕的行數和轉換里的錯誤數
  • 腳本作業項的退出狀態
JavaScript 作業項中的表達式

轉換或作業的元數據

轉換和作業是Kettle的核心組成部分。它們可以用XML格式來表示,它們的這些表示方式,都依賴下面的這些元數據:

  • 名字
  • 文件名
  • 目錄
  • 描述
  • 擴展描述

數據庫連接

Kettle里的轉換和作業使用數據庫連接到關系型數據庫。Kettle數據連接實際是數據庫的描述,也就是建立實際連接需要的參數。實際連接只是在運行時才建立。

工具

Kettle里有不同工具,用於ETL的不同階段。主要工具如下:

  • Spoon:圖形界面工具,快速設計和維護復雜的ETL工作流
  • Kitchen:運行作業的命令行工具
  • Pan:運行轉換的命令行工具
  • Carte:輕量級的(大概1MB)Web服務器,用來遠程執行轉換或作業。一個運行有Care進程的機器可以作為從服務器,從服務器是Kettle集群的一部分。

資源庫

資源庫主要用於開發人員在一起工作,開發人員之間的合作。目前有3種覺資源庫:

  • 數據庫資源庫:數據庫資源庫是把所有的ETL信息保存在關系型數據庫中。

  • Pentaho資源庫:Pentaho資源庫是一個插件,在Kettle的企業版中有這個插件。

  • 文件資源庫:文件資源庫是在一個文件目錄下定義一個資源庫。這里的文件目錄包括:zip文件、Web服務、FTP服務等。



作者:小糾結在簡書
鏈接:https://www.jianshu.com/p/a02480e2dda1
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

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



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