1. 程式人生 > >ETL工具Kettle的基本使用

ETL工具Kettle的基本使用

0.ETL簡介

ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將資料從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。

ETL包含了三方面:
抽取:將資料從各種原始的業務系統中讀取出來,這是所有工作的前提。
轉換:按照預先設計好的規則將抽取得資料進行轉換,使本來異構的資料格式能統一起來。
裝載:將轉換完的資料按計劃增量或全部匯入到資料倉庫中。

0.1.ETL與Kettle的關係

Kettle 是一種可以用來做ETL操作的開源工具

還有一些其他的ETL工具:

  • DataStage:這是IBM為其配套的DB2開發的ETL工具,也可以用於其它資料庫資料的整合 Informatica
  • PowerCenter:可用於訪問和整合幾乎任何業務系統、任何格式的資料,它可以按任意速度在企業內交付資料,具有高效能、高可擴充套件性、高可用性的特點

1.Kettle簡介

Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上執行,綠色無需安裝,資料抽取高效穩定。

Kettle 中文名稱叫水壺,該專案的主程式設計師MATT 希望把各種資料放到一個壺裡,然後以一種指定的格式流出。

Kettle這個ETL工具集,它允許你管理來自不同資料庫的資料,通過提供一個圖形化的使用者環境來描述你想做什麼,而不是你想怎麼做。

1.1.Kettle與Pentaho、PDI的關係

PDI 的全稱是Pentaho Data Integeration,Kettle 是 PDI 以前的名稱

Kettle 的主作者是 Matt ,他在 2003 年就開始了這個專案,在 PDI 的程式碼裡就可以看到最早的日期大概在2003年4月。 從版本2.2開始, Kettle 專案進入了開源領域,並遵守 LGPL 協議。

在 2006年 Kettle 加入了開源的 BI 組織 Pentaho, 正式命名為PDI, 加入Pentaho 後Kettle 的發展越來越快了,並有越來越多的人開始關注它了。

2. Kettle中的基本概念

Kettle中有兩種指令碼檔案,transformation

job

  • transformation完成針對資料的基礎轉換
  • job則完成整個工作流的控制

3. Kettle的安裝

  • 配置好jdk環境變數
  • 下載kettle後解壓到任意路徑即可使用
  • 啟動:
    transformation/job圖形化設計工具的啟動:
    Windows下雙擊spoon.bat啟動
    Linux下執行spoon.sh指令碼啟動

3.1.修改啟動JVM引數

如果執行時發現記憶體溢位,可以參照如下方法修改JVM啟動引數:
Windows下修改Spoon.bat檔案
Linux下修改spoon.sh檔案:
找到下面一行內容

PENTAHO_DI_JAVA_OPTIONS="-Xmx512m -XX:MaxPermSize=256m"

將Xmx512m中的512改為一個更大的數字。

4. Kettle模組介紹

Kettle包括三大模組:

  • Spoon——轉換/工作(transform/job)設計工具 (GUI方式)
  • Kitchen——工作(job)執行器 (命令列方式)
  • Pan——轉換(trasform)執行器 (命令列方式)
    Kettle各模組相互關係

5. Kettle元件介紹

  • 建立一個新的transformation,kettle預設transformation檔案儲存後後綴名為ktr
  • 建立一個新的job,kettle預設job檔案儲存後後綴名為kjb

5.1. Kettle元件介紹——Transformation元件樹介紹

Transformation中的節點介紹如下:

  • Main Tree:選單列出的是一個transformation中基本的屬性,可以通過各個節點來檢視。
  • DB連線:顯示當前transformation中的資料庫連線,每一個transformation的資料庫連線都需要單獨配置。
  • Steps:一個transformation中應用到的環節列表
  • Hops:一個transformation中應用到的節點連線列表
    核心物件選單列出的是transformation中可以呼叫的環節列表,可以通過滑鼠拖動的方式對環節進行新增:
  • Input:輸入環節
  • Output:輸出環節
  • Lookup:查詢環節
  • Transform:轉化環節
  • Joins:連線環節
  • Scripting:指令碼環節

5.2. Kettle元件介紹——Job元件樹介紹

Job中的節點介紹如下:

  • Main Tree:列出的是一個Job中基本的屬性,可以通過各個節點來檢視。
    DB連線:顯示當前Job中的資料庫連線,每一個Job的資料庫連線都需要單獨配置。
  • Job entries/作業專案:一個Job中引用的環節列表
    核心物件選單列出的是Job中可以呼叫的環節列表,可以通過滑鼠拖動的方式對環節進行新增。
    每一個環節可以通過滑鼠拖動來將環節新增到主視窗中。
    並可通過shift+滑鼠拖動,實現環節之間的連線。

6. Kettle使用舉例

  • 1.將資料庫資料匯入到文字檔案中->db2text.ktr
  • 2.將文字檔案中的資料匯入到資料庫中->text2db.ktr
  • 3.將資料從一個數據庫表匯入到另一個數據庫表中 table2Table.ktr/table2Table.kjb
  • 4.從ftp下載檔案到本地,再將該檔案上傳到hdfs ->ftp2Local2Hdfs.kjb
  • 5.將本地檔案上傳到ftp->local2Ftp.kjb

7. Kettle使用舉例——序列/並行

  • 序列:一個節點操作失敗,後面的節點將不再繼續執行
  • 並行:從一個節點分開後多分支執行,每條分支的執行結果不影響其他分支,分支合併後的節點也會多次執行,即所有執行成功的分支都會執行合併後的節點

  • 在spoon中演示並檢視並行執行結果->parallel.kjb

8. Pan命令和kitchen命令演示

  • 演示使用Pan命令執行transformation
pan.sh -file db2text.ktr
  • 演示使用kitchen命令執行job
kitchen.sh -file local2Ftp.kjb
  • 檢視日誌檔案

    將日誌檔案重定向到文字檔案中

pan.sh -file db2text.ktr >log.log
kitchen.sh -file local2Ftp.kjb >log.log