Pentaho Data Integration(PDI)簡(jiǎn)介1. PDI結(jié)構(gòu)簡(jiǎn)介
圖 1?1 PDI核心組件 Spoon是構(gòu)建ETL Jobs和Transformations的工具。Spoon可以以拖拽的方式圖形化設(shè)計(jì),能夠通過(guò)spoon調(diào)用專用的數(shù)據(jù)集成引擎或者集群。 Data Integration Server是一個(gè)專用的ETL Server,它的主要功能有:
Enterprise Console提供了一個(gè)小型的客戶端,用于管理Pentaho Data Integration企業(yè)版的部署,包括企業(yè)版本的證書管理、監(jiān)控和控制遠(yuǎn)程Pentaho Data Integration服務(wù)器上的活動(dòng)、分析已登記的作業(yè)和轉(zhuǎn)換的動(dòng)態(tài)績(jī)效。 2. PDI的組成部分
3. PDI的相關(guān)術(shù)語(yǔ)和基本概念
圖 1?2 PDI概念模型圖 要了解Kettle的執(zhí)行分為兩個(gè)層次:Job和Transformation。兩個(gè)層次的最主要區(qū)別在于數(shù)據(jù)傳遞和運(yùn)行方式。 3.1. Transformation(轉(zhuǎn)換)Transformation(轉(zhuǎn)換)是由一系列被稱之為step(步驟)的邏輯工作的網(wǎng)絡(luò)。轉(zhuǎn)換本質(zhì)上是數(shù)據(jù)流。下圖是一個(gè)轉(zhuǎn)換的例子,這個(gè)轉(zhuǎn)換從文本文件中讀取數(shù)據(jù),過(guò)濾,然后排序,最后將數(shù)據(jù)加載到數(shù)據(jù)庫(kù)。本質(zhì)上,轉(zhuǎn)換是一組圖形化的數(shù)據(jù)轉(zhuǎn)換配置的邏輯結(jié)構(gòu)。
轉(zhuǎn)換的兩個(gè)相關(guān)的主要組成部分是step(步驟)和hops(節(jié)點(diǎn)連接)。 轉(zhuǎn)換文件的擴(kuò)展名是.ktr。 3.2. Steps(轉(zhuǎn)換)Steps(步驟)是轉(zhuǎn)換的建筑模塊,比如一個(gè)文本文件輸入或者一個(gè)表輸出就是一個(gè)步驟。在PDI中有140多個(gè)步驟,它們按不同功能進(jìn)行分類,比如輸入類、輸出類、腳本類等。每個(gè)步驟用于完成某種特定的功能,通過(guò)配置一系列的步驟就可以完成你所需要完成的任務(wù)。 3.3. Hops(節(jié)點(diǎn)連接)Hops(節(jié)點(diǎn)連接)是數(shù)據(jù)的通道,用于連接兩個(gè)步驟,使得元數(shù)據(jù)從一個(gè)步驟傳遞到另一個(gè)步驟。在上圖所示的轉(zhuǎn)換中,它像似順序執(zhí)行發(fā)生的,但事實(shí)并非如此。節(jié)點(diǎn)連接決定了貫穿在步驟之間的數(shù)據(jù)流,步驟之間的順序不是轉(zhuǎn)換執(zhí)行的順序。當(dāng)執(zhí)行一個(gè)轉(zhuǎn)換時(shí),每個(gè)步驟都以自己的線程啟動(dòng),并不斷的接受和推送數(shù)據(jù)。 注意:所以的步驟是同步開(kāi)啟和運(yùn)行的,所以步驟的初始化的順序是不可知的。因?yàn)槲覀儾荒茉诘谝粋€(gè)步驟中設(shè)置一個(gè)變量,然后在接下來(lái)的步驟中使用它。 在一個(gè)轉(zhuǎn)換中,一個(gè)步驟可以有多個(gè)連接,數(shù)據(jù)流可以從一個(gè)步驟流到多個(gè)步驟。在Spoon中,hops就想是箭,它不僅允許數(shù)據(jù)從一個(gè)步驟流向另一個(gè)步驟,也決定了數(shù)據(jù)流的方向和所經(jīng)步驟。如果一個(gè)步驟的數(shù)據(jù)輸出到了多個(gè)步驟,那么數(shù)據(jù)既可以是復(fù)制的,也可以是分發(fā)的。 3.4. Jobs(工作)Jobs(工作)是基于工作流模型的,協(xié)調(diào)數(shù)據(jù)源、執(zhí)行過(guò)程和相關(guān)依賴性的ETL活動(dòng)。 Jobs(工作)將功能性和實(shí)體過(guò)程聚合在了一起。下圖是一個(gè)工作的例子。
一個(gè)工作中展示的任務(wù)有從FTP獲取文件、核查一個(gè)必須存在的數(shù)據(jù)庫(kù)表是否存在、執(zhí)行一個(gè)轉(zhuǎn)換、發(fā)送郵件通知一個(gè)轉(zhuǎn)換中的錯(cuò)誤等。最終工作的結(jié)果可能是數(shù)據(jù)倉(cāng)庫(kù)的更新等。 工作由工作節(jié)點(diǎn)連接、工作實(shí)體和工作設(shè)置組成。 工作文件的擴(kuò)展名是.kjb。 4. Variable(變量)根據(jù)變量的作用域,變量被分為兩類:環(huán)境變量和kettle變量。 4.1. 環(huán)境變量環(huán)境變量可以通過(guò)edit menu下面的set environment variables對(duì)話框進(jìn)行設(shè)置。使用環(huán)境變量的唯一的問(wèn)題是,它不能被動(dòng)態(tài)的使用。如果在同一個(gè)應(yīng)用服務(wù)器中執(zhí)行兩個(gè)或多個(gè)使用同一環(huán)境變量的轉(zhuǎn)換,將可能發(fā)生沖突。環(huán)境變量在所以使用jvm的應(yīng)用中可見(jiàn)。 4.2. Kettle變量Kettle變量用于在一個(gè)小的動(dòng)態(tài)范圍內(nèi)存儲(chǔ)少量的信息。Kettle變量是kettle本地的,作用范圍可以是一個(gè)工作或轉(zhuǎn)換,在工作或轉(zhuǎn)換中可以設(shè)置或修改。Set variable步驟用來(lái)設(shè)置與此變量有關(guān)的工作從此設(shè)置其作用域,如:父工作、祖父工作或根工作。 5. Kitchen執(zhí)行器的使用5.1. Kitchen執(zhí)行器的參數(shù)-rep : Repository name 任務(wù)包所在存儲(chǔ)名 -user : Repository username 執(zhí)行人 -pass : Repository password 執(zhí)行人密碼 -job : The name of the job to launch 任務(wù)包名稱 -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) 指定日志級(jí)別 -log : The logging file to write to 指定日志文件 -listdir : List the directories in the repository 列出指定存儲(chǔ)中的目錄結(jié)構(gòu)。 -listjobs : List the jobs in the specified directory 列出指定目錄下的所有任務(wù) -listrep : List the defined repositories 列出所有的存儲(chǔ) -norep : Don''t log into the repository 不寫日志 5.2. Kitchen命令行選項(xiàng)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的執(zhí)行方式的實(shí)例kitchen.bat /norep -file=D:/kettledata/mysal2orcle.kjb >> kitchen_%date:~0,10%.log 上面的含義是,使用kitchen.bat 命令來(lái)執(zhí)行job文件,job文件的存放路徑是D:/kettledata/mysal2orcle.kjb,并且將執(zhí)行的結(jié)果輸出到 kitchen_%date:~0,10%.log文件中。 6. Pentahon XUL Framework簡(jiǎn)介XUL Framework是一個(gè)試圖為不同UI技術(shù)提供統(tǒng)一樣式的項(xiàng)目。它的目標(biāo)是使得多種UI技術(shù)(如:Swing、SWT、GWT)能夠提交出一個(gè)統(tǒng)一的用戶接口而不必每次重寫描述層。XUL的常見(jiàn)案例有:普通對(duì)話框、可定制的菜單和工具欄、新的工具應(yīng)用。 6.1. XUL文件XUL是英文“XML User Interface Language”的首字母縮寫。它是為了支持Mozilla系列的應(yīng)用程序(如Mozilla Firefox和Mozilla Thunderbird)而開(kāi)發(fā)的使用者界面標(biāo)示語(yǔ)言。顧名思義,它是一種應(yīng)用XML來(lái)描述使用者界面的標(biāo)示語(yǔ)言。 6.2. Pentaho XUL的執(zhí)行步驟(1) 加載XUL文件
(2) 添加Event Handlers
(3) 為SWT提供菜單欄
(4) 為菜單欄添加菜單項(xiàng)
PS:這次僅僅介紹了Kettle的基本概念和術(shù)語(yǔ),這部分是由我同學(xué)來(lái)完成的。Kettle應(yīng)該還算比較小眾的開(kāi)源軟件資料不多,希望這次的分析能夠?qū)Υ蠹矣幸欢ǖ膸椭4蟛糠值姆治龆际亲约豪斫獾?,所以有所偏差或錯(cuò)誤請(qǐng)大家指正。接下來(lái)準(zhǔn)備分析,Kettle的插件體系結(jié)構(gòu)、轉(zhuǎn)換機(jī)制、job運(yùn)行機(jī)制。 |
|