開源ETL工具:Kettle

jopen 10年前發布 | 149K 次閱讀 Kettle 數據挖掘

Kettle也叫PDI,在2006年Kettle加入了開源的BI組織Pentaho,正式命名為PDI,英文全稱為Pentaho Data Integeration。Kettle是“Kettle E.T.T.L. Envirnonment”只取首字母的縮寫,這意味著它被設計用來幫助你實現你的ETTL需要:抽取、轉換、裝入和加載數據;翻譯成中文名稱應該叫水 壺,名字的起源正如該項目的主程序員MATT在一個論壇里說的那樣:希望把各種數據放到一個壺里然后以一種指定的格式流出。

Kettle允許管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。Kettle中有兩種腳本文件,轉 換(transformation)和工作(job),transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。

Kettle整體結構圖:

開源ETL工具:Kettle

Kettle的術語:

  • Transformation:轉換步奏,可以理解為將一個或者多個不同的數據源組裝成一條流水線。然后最終輸出到某一個地方,文件或者數據庫等。
  • Job:作業,可以調度設計好的轉換,也可以執行一些文件處理(比較,刪除),還可以上傳下載文件、發送郵件、執行Shell命令等。 Job與Transformation的差別是:Transformation專注于數據的ETL,而Job的范圍比較廣,可以是 Transformation,也可以是Mail、SQL、Shell、FTP等等,甚至可以是另外一個Job。
  • Hop:連接Transformation步驟或者連接Job(實際上就是執行順序)的連線。
    • Transformation hop:主要表示數據的流向。從輸入,過濾等轉換操作,到輸出。
    • Job hop:可設置執行條件:無條件執行、當上一個Job執行結果為true時執行、當上一個Job執行結果為false時執行

Kettle家族目前包括4個產品:Spoon、Pan、CHEF、Kitchen。

  • SPOON 允許你通過圖形界面來設計ETTL轉換過程(Transformation)。
  • PAN 允許你批量運行由Spoon設計的ETL轉換 (例如使用一個時間調度器)。Pan是一個后臺執行的程序,沒有圖形界面。
  • CHEF 允許你創建任務(Job)。  任務通過允許每個轉換,任務,腳本等等,更有利于自動化更新數據倉庫的復雜工作。任務通過允許每個轉換,任務,腳本等等。任務將會被檢查,看看是否正確地運行了。
  • KITCHEN 允許你批量使用由Chef設計的任務 (例如使用一個時間調度器)。KITCHEN也是一個后臺運行的程序。

簡單的可理解為:

  • Spoon:Transformation設計工具(GUI方式)
  • Pan:Transformation執行器(命令行方式)
  • Chef:Job設計工具(GUI方式)
  • Kitchen:Job執行器(命令行方式)

Kettle是由純JAVA編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。要運行kettle工具必須 安裝Sun公司的JAVA運行環境,安裝好java環境后,在操作系統環境變量path中配置jre路徑,把kettle工具壓縮包解壓后可直接使用。 Spoon是一個圖形用戶界面,它允許你運行轉換或者任務,其中轉換是用Pan工具來運行,任務是用Kitchen來運行。Pan是一個數據轉換引擎,它 可以執行很多功能,例如:從不同的數據源讀取、操作和寫入數據。Kitchen是一個可以運行利用XML或數據資源庫描述的任務。通常任務是在規定的時間 間隔內用批處理的模式自動運行。下面是在不同的平臺上運行 Spoon所支持的腳本:

  • Spoon.bat:在windows 平臺運行Spoon。
  • Spoon.sh:在 Linux、Apple OSX、Solaris 平臺運行 Spoon。

資源庫是用來保存轉換任務的,用戶通過圖形界面創建的的轉換任務可以保存在資源庫中。資源庫可以使多用戶共享轉換任務,轉換任務在資源庫中是以文件夾形式分組管理的,用戶可以自定義文件夾名稱。資源庫有兩種形式:

  1. Kettle database repository,即保存在各種常見的數據庫資源庫類型,用戶通過用戶名/密碼來訪問資源庫中的資源,默認的用戶名/密碼是admin/admin和guest/guest。
  2. Kettle file repository,保存在服務器硬盤文件夾內的資源庫類型,此類型的資源庫無需用戶進行登錄,直接進行操作。

資源庫并不是必須的,如果沒有資源庫,用戶還可以把轉換任務保存在xml文件中。為了方便管理,建議用戶建立并使用數據庫類型資源庫Kettle database repository。

Kettle的應用場景:

  1. 表視圖模式:在同一網絡環境下,對各種數據源的表數據進行抽取、過濾、清洗等,例如歷史數據同步、異構系統數據交互、數據對稱發布或備份等都歸屬 于這個模式;傳統的實現方式一般都要進行研發(一小部分例如兩個相同表結構的表之間的數據同步,如果SQL Server數據庫可以通過發布/訂閱實現)。
  2. 前置機模式:這是一種典型的數據交換應用場景,數據交換的雙方A和B網絡不通,但是A和B都可以和前置機C連接,一般的情況是雙方約定好前置機的 數據結構,這個結構跟A和B的數據結構基本上是不一致的,這樣我們就需要把應用上的數據按照數據標準推送到前置機上,此時可通過Kettle實現;
  3. 文件模式: 數據交互的雙方A和B是完全的物理隔離,這樣就只能通過以文件的方式來進行數據交互了,例如XML格式,在應用A中我們開發一個接口用來生成標準格式的 XML,然后用介質在某一時間把XML數據拷貝之后,然后接入到應用B上,應用B上在按照標準接口解析相應的文件把數據接收過來;

Kettle轉化功能介紹

  • Kettle 中有兩種腳本文件,transformation (.ktr)和 job(.kjb),transformation 完成針對數據的基礎轉換,job 則完成整個工作流的控制。
  • 所有功能支持控件化,使用簡單
  • 支持多樣化數據源類型:
    • 基本的文本文件
    • Access、Excel、XML、Property文件格式
    • MDX查詢語言、 Cube文件、Streaming XML數據流
    • 自動產生空記錄或者行
    • 從XBase類型文件(DBF)讀取數據
    • 關系型數據庫
    • 獲取系統信息如文件名稱、系統時間等
  • 特殊目標數據源支持
    • 把數據寫入到Cube
    • 把數據寫入XML
  • 支持多種查詢
    • 調用數據庫存儲過程
    • 基本的數據庫查詢
    • 判斷表以及列、操作系統文件是否存在
    • 從URL接收查詢
    • 使用Web服務查詢信息
    • 使用數據流中的值作為參數來執行一個數據庫查詢
    • 流查詢:從轉換中其他流里查詢值
  • 轉換功能
    • 值映射、分組、去重、拆分字段、行列轉換
    • 復制行
  • 支持的腳本
    • JS腳本
    • SQL腳本
    • 正則表達式
  • 支持漸變維度更新
  • 批量加載:
    • Greenplum Bulk Loader
    • Oracle Bulk Loader
    • MSSQL Bulk Loader
    • MYSQL Bulk Loader
    • PostgreSQL Bulk Loader
  • 支持分區表和集群
  • 支持大數據對接
  • Avro Input
  • Cassandra Input &

Kettle作業功能介紹

  • 可以執行操作系統命令和操作:
    • Ping 主機
    • 寫日志
    • 發送郵件
    • 從POP Server獲取郵件并保存在本地
    • 比較文件夾、文件
    • 創建、復制、移動、刪除、壓縮文件
    • 從HTTP獲取或者上傳文件
    • 操作延遲等待
  • 判斷文件是否存在
  • 執行JavaScript、SQL、Shell腳本
  • 支持安全FTP獲取、上傳文件
  • 刪除遠程文件
  • 支持SSH2上傳下載

Kettle的功能非常強大,數據抽取效率也比較高,開源產品,可以進行第三方修改,工具中的控件能夠實現數據抽取的大部分需求。所有功能支持控件化,使用簡單。

官方網站:http://community.pentaho.com/projects/data-integration/

引用地址:http://www.biaodianfu.com/kettle.html
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!