Pentaho Data Integration(PDI)簡介
1. PDI結構簡介
圖 1‑1 PDI核心組件
Spoon是構建ETL Jobs和Transformations的工具。Spoon可以以拖拽的方式圖形化設計,能夠通過spoon調用專用的數據集成引擎或者集群。
Data Integration Server是一個專用的ETL Server,它的主要功能有:
功能 |
描述 |
執行 |
通過Pentaho Data Integration引擎執行ETL的作業或轉換 |
安全性 |
管理用戶、角色或集成的安全性 |
內容管理 |
提供一個集中的資源庫,用來管理ETL的作業和轉換。資源庫包含所有內容和特征的歷史版本。 |
時序安排 |
在spoon設計者環境中提供管理Data Integration Server上的活動的時序和監控的服務 |
Enterprise Console提供了一個小型的客戶端,用於管理Pentaho Data Integration企業版的部署,包括企業版本的證書管理、監控和控制遠程Pentaho Data Integration服務器上的活動、分析已登記的作業和轉換的動態績效。
2. PDI的組成部分
名稱 |
描述 |
Spoon |
通過圖形接口,用於編輯作業和轉換的桌面應用。 |
Pan |
一個獨立的命令行程序,用於執行由Spoon編輯的轉換和作業。 |
Kitchen |
一個獨立的命令行程序,用於執行由Spoon編輯的作業。 |
Carte |
Carte是一個輕量級的Web容器,用於建立專用、遠程的ETL Server。 |
3. PDI的相關術語和基本概念
圖 1‑2 PDI概念模型圖
要了解Kettle的執行分為兩個層次:Job和Transformation。兩個層次的最主要區別在於數據傳遞和運行方式。
3.1. Transformation(轉換)
Transformation(轉換)是由一系列被稱之為step(步驟)的邏輯工作的網絡。轉換本質上是數據流。下圖是一個轉換的例子,這個轉換從文本文件中讀取數據,過濾,然后排序,最后將數據加載到數據庫。本質上,轉換是一組圖形化的數據轉換配置的邏輯結構。
轉換的兩個相關的主要組成部分是step(步驟)和hops(節點連接)。
轉換文件的擴展名是.ktr。
3.2. Steps(轉換)
Steps(步驟)是轉換的建築模塊,比如一個文本文件輸入或者一個表輸出就是一個步驟。在PDI中有140多個步驟,它們按不同功能進行分類,比如輸入類、輸出類、腳本類等。每個步驟用於完成某種特定的功能,通過配置一系列的步驟就可以完成你所需要完成的任務。
3.3. Hops(節點連接)
Hops(節點連接)是數據的通道,用於連接兩個步驟,使得元數據從一個步驟傳遞到另一個步驟。在上圖所示的轉換中,它像似順序執行發生的,但事實並非如此。節點連接決定了貫穿在步驟之間的數據流,步驟之間的順序不是轉換執行的順序。當執行一個轉換時,每個步驟都以自己的線程啟動,並不斷的接受和推送數據。
注意:所以的步驟是同步開啟和運行的,所以步驟的初始化的順序是不可知的。因為我們不能在第一個步驟中設置一個變量,然后在接下來的步驟中使用它。
在一個轉換中,一個步驟可以有多個連接,數據流可以從一個步驟流到多個步驟。在Spoon中,hops就想是箭,它不僅允許數據從一個步驟流向另一個步驟,也決定了數據流的方向和所經步驟。如果一個步驟的數據輸出到了多個步驟,那么數據既可以是復制的,也可以是分發的。
3.4. Jobs(工作)
Jobs(工作)是基於工作流模型的,協調數據源、執行過程和相關依賴性的ETL活動。
Jobs(工作)將功能性和實體過程聚合在了一起。下圖是一個工作的例子。
一個工作中展示的任務有從FTP獲取文件、核查一個必須存在的數據庫表是否存在、執行一個轉換、發送郵件通知一個轉換中的錯誤等。最終工作的結果可能是數據倉庫的更新等。
工作由工作節點連接、工作實體和工作設置組成。
工作文件的擴展名是.kjb。
4. Variable(變量)
根據變量的作用域,變量被分為兩類:環境變量和kettle變量。
4.1. 環境變量
環境變量可以通過edit menu下面的set environment variables對話框進行設置。使用環境變量的唯一的問題是,它不能被動態的使用。如果在同一個應用服務器中執行兩個或多個使用同一環境變量的轉換,將可能發生沖突。環境變量在所以使用jvm的應用中可見。
4.2. Kettle變量
Kettle變量用於在一個小的動態范圍內存儲少量的信息。Kettle變量是kettle本地的,作用范圍可以是一個工作或轉換,在工作或轉換中可以設置或修改。Set variable步驟用來設置與此變量有關的工作從此設置其作用域,如:父工作、祖父工作或根工作。
5. Kitchen執行器的使用
5.1. Kitchen執行器的參數
-rep : Repository name 任務包所在存儲名
-user : Repository username 執行人
-pass : Repository password 執行人密碼
-job : The name of the job to launch 任務包名稱
-dir : The directory (don''t forget the leading / or \)
-file : The filename (Job XML) to launch
-level : The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) 指定日志級別
-log : The logging file to write to 指定日志文件
-listdir : List the directories in the repository 列出指定存儲中的目錄結構。
-listjobs : List the jobs in the specified directory 列出指定目錄下的所有任務
-listrep : List the defined repositories 列出所有的存儲
-norep : Don''t log into the repository 不寫日志
5.2. Kitchen命令行選項
kitchen.bat 后面可以是-也可以是/然后再加options
Options:
/rep : Repository name
/user : Repository username
/pass : Repository password
/job : The name of the job to launch
/dir : The directory (dont forget the leading /)
/file : The filename (Job XML) to launch
/level : The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing)
/logfile : The logging file to write to
/listdir : List the directories in the repository
/listjobs : List the jobs in the specified directory
/listrep : List the available repositories
/norep : Do not log into the repository
/version : show the version, revision and build date
/param : Set a named parameter <NAME>=<VALUE>. For example -param:FOO=bar
/listparam : List information concerning the defined parameters in the specified job.
/export : Exports all linked resources of the specified job. The argument is the name of a ZIPfile.
而options 后面可以是=也可以是:也可以是空格
kitchen.bat /file d:\ 或者 -file=D:\ 或者/file:D:\等等都可以。
5.3. Windows下kitchen的執行方式的實例
kitchen.bat /norep -file=D:/kettledata/mysal2orcle.kjb >> kitchen_%date:~0,10%.log
上面的含義是,使用kitchen.bat 命令來執行job文件,job文件的存放路徑是D:/kettledata/mysal2orcle.kjb,並且將執行的結果輸出到 kitchen_%date:~0,10%.log文件中。
6. Pentahon XUL Framework簡介
XUL Framework是一個試圖為不同UI技術提供統一樣式的項目。它的目標是使得多種UI技術(如:Swing、SWT、GWT)能夠提交出一個統一的用戶接口而不必每次重寫描述層。XUL的常見案例有:普通對話框、可定制的菜單和工具欄、新的工具應用。
6.1. XUL文件
XUL是英文“XML User Interface Language”的首字母縮寫。它是為了支持Mozilla系列的應用程序(如Mozilla Firefox和Mozilla Thunderbird)而開發的使用者界面標示語言。顧名思義,它是一種應用XML來描述使用者界面的標示語言。
6.2. Pentaho XUL的執行步驟
(1) 加載XUL文件
(2) 添加Event Handlers
(3) 為SWT提供菜單欄
(4) 為菜單欄添加菜單項
PS:這次僅僅介紹了Kettle的基本概念和術語,這部分是由我同學來完成的。Kettle應該還算比較小眾的開源軟件資料不多,希望這次的分析能夠對大家有一定的幫助。大部分的分析都是自己理解的,所以有所偏差或錯誤請大家指正。接下來准備分析,Kettle的插件體系結構、轉換機制、job運行機制。