<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    開源項目 Kettle 介紹
    ?
    ?
    ??? 一直想在手工ETL的同時自己做一個簡單的元數(shù)據(jù)管理庫。到網(wǎng)上搜索了一下,有前輩說可以參考開源項目Kettle的源代碼,于是就到網(wǎng)上下了一個用了一下,發(fā)現(xiàn)過程比較簡潔,而且在很多地方都做得比較人性化,比如支持自己編寫SQL、Java Script等。所以特地打算研究一下,發(fā)現(xiàn)網(wǎng)上已經(jīng)有很多教程了,轉(zhuǎn)一篇過來看看。改天有時間再研究一下后臺的代碼。不過對于元數(shù)據(jù)的記錄信息似乎少了點,不過鑒于它是完全免費使用的,也沒什么可說的了。下面是轉(zhuǎn)載文:
    ----------------------------
    ?
    ??? 說到ETL開源項目,Kettle當屬翹首,因此,偶決定花點時間了解一下。項目名稱很有意思,水壺。按項目負責人Matt的說法:把各種數(shù)據(jù)放到一個壺里,然后呢,以一種你希望的格式流出。呵呵,外國人都很有聯(lián)想力。看了提供的文檔,然后對發(fā)布程序的簡單試用后,可以很清楚得看到Kettle的四大塊:
    ??? Chef——工作(job)設(shè)計工具 (GUI方式)
    ??? Kitchen——工作(job)執(zhí)行器 (命令行方式)
    ??? Spoon——轉(zhuǎn)換(transform)設(shè)計工具(GUI方式)
    ??? Span——轉(zhuǎn)換(trasform)執(zhí)行器(命令行方式)
    ?
    ??? 嗯,廚師已經(jīng)在廚房里,勺子和盤子一應俱全,且看能做出如何的大餐?
    ?
    ?
    一:Chef——工作(job)設(shè)計器

    ??? 這是一個GUI工具,操作方式主要通過拖拖拉拉,勿庸多言,一看就會。何謂工作?多個作業(yè)項,按特定的工作流串聯(lián)起來,開成一項工作。正如:我的工作是軟件開發(fā)。我的作業(yè)項是:設(shè)計、編碼、測試!先設(shè)計,如果成功,則編碼,否則繼續(xù)設(shè)計,編碼完成則開始設(shè)計,周而復始,作業(yè)完成。來,看看Chef中的作業(yè)項:
    ??? 1.1: 轉(zhuǎn)換:指定更細的轉(zhuǎn)換任務,通過Spoon生成。通過Field來輸入?yún)?shù)。
    ??? 1.2: SQL:sql語句執(zhí)行,
    ??? 1.3: FTP:下載ftp文件。
    ??? 1.4: 郵件:發(fā)送郵件。
    ??? 1.5: 檢查表是否存在,
    ??? 1.6: 檢查文件是否存在,
    ??? 1.7: 執(zhí)行shell腳本。如:dos命令。
    ??? 1.8: 批處理。(注意:windows批處理不能有輸出到控制臺)。
    ??? 1.9: Job包。作為嵌套作業(yè)使用。
    ??? 1.10:JavaScript執(zhí)行。這個比較有意思,我看了一下源碼,如果你有自已的Script引擎,可以很方便的替換成自定義Script,來擴充其功能。
    ??? 1.11:SFTP:安全的Ftp協(xié)議傳輸。
    ??? 1.12:HTTP方式的上/下傳。
    ?
    ??? 好了,看看工作流:
    ??? 如上文所述,工作流是作業(yè)項的連接方式。分為三種:無條件,成功,失敗。這個沒啥好說的,從名字就能知道它的意圖。嗯,為了方便工作流使用,提供了幾個輔助結(jié)點單元(你也可將其作為簡單的作業(yè)項):
    ??? 1:Start單元,任務必須由此開始。設(shè)計作業(yè)時,以此為起點。
    ??? 2:OK單元:可以編制做為中間任務單元,且進行腳本編制,用來控制流程。
    ??? 3:ERROR單元:用途同上。
    ??? 4:DUMMY單元:啥都不做,主要是用來支持多分支的情況。文檔中有例子,不再多說。
    ?
    ??? 存儲方式:

    ??? 支持XML存儲,或存儲到指定數(shù)據(jù)庫中。一些默認的配置(如數(shù)據(jù)庫存儲位置……),在系統(tǒng)的用戶目錄下,單獨建立了一個.Kettle目錄,用來保存用戶的這些設(shè)置。?
    ??? LogView:可查看執(zhí)行日志。
    ?
    ?
    二:Kitchen——作業(yè)執(zhí)行器 ?
    ??? 是一個作業(yè)執(zhí)行引擎,用來執(zhí)行作業(yè)。這是一個命令行執(zhí)行工具,沒啥可講的,就把它的參數(shù)說明列一下。
    ??? -rep????? : Repository name?? 任務包所在存儲名
    ??? -user???? : Repository username?? 執(zhí)行人
    ??? -pass???? : Repository password?? 執(zhí)行人密碼
    ??? -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 列出指定存儲中的目錄結(jié)構(gòu)。
    ??? -listjobs : List the jobs in the specified directory 列出指定目錄下的所有任務
    ??? -listrep? : List the defined repositories 列出所有的存儲
    ??? -norep??? : Don''t log into the repository? 不寫日志
    ??? 嗯,居然不支持調(diào)度。看了一下文檔,建議使用操作系統(tǒng)提供的調(diào)度器來實現(xiàn)調(diào)度,比如:Windows可以使用它的任務計劃工具。
    ?
    ?
    三:Spoon——轉(zhuǎn)換過程設(shè)計器

    ??? GUI工作,用來設(shè)計數(shù)據(jù)轉(zhuǎn)換過程,創(chuàng)建的轉(zhuǎn)換可以由Pan來執(zhí)行,也可以被Chef所包含,作為作業(yè)中的一個作業(yè)項。下面簡單列舉一下所有的轉(zhuǎn)換過程。(簡單描述,詳細的可見Spoon文檔)
    ?
    ??? 3.1:Input-Steps:輸入步驟
    ??? 3.1.1:Text file input:文本文件輸入,
    ?????????? 可以支持多文件合并,有不少參數(shù),基本一看參數(shù)名就能明白其意圖。
    ??? 3.1.2:Table input:數(shù)據(jù)表輸入
    ?????????? 實際上是視圖方式輸入,因為輸入的是sql語句。當然,需要指定數(shù)據(jù)源(數(shù)據(jù)源的定制方式在后面講一下)
    ??? 3.1.3:Get system info:取系統(tǒng)信息
    ?????????? 就是取一些固定的系統(tǒng)環(huán)境值,如本月最后一天的時間,本機的IP地址之類。
    ??? 3.1.4:Generate Rows:生成多行。
    ?????????? 這個需要匹配使用,主要用于生成多行的數(shù)據(jù)輸入,比如配合Add sequence可以生成一個指定序號的數(shù)據(jù)列。
    ??? 3.1.5:XBase Input:
    ??? 3.1.6:Excel Input:
    ??? 3.1.7:XML Input:
    ?????????? 這三個沒啥可講的,看看參數(shù)就明了。
    ?
    ??? 3.2:Output-Steps: 輸出步聚
    ??? 3.2.1:Text file output:文本文件輸出。
    ?????????? 這個用來作測試蠻好,呵呵。很方便的看到轉(zhuǎn)換的輸出。
    ??? 3.2.2:Table output:輸出到目的表。
    ??? 3.2.3:Insert/Update:目的表和輸入數(shù)據(jù)行進行比較,然后有選擇的執(zhí)行增加,更新操作。
    ??? 3.2.4:Update:同上,只是不支持增加操作。
    ??? 3.2.5:XML Output:
    ?
    ??? 3.3:Look-up:查找操作
    ??? DataBase:
    ??? Stream:
    ??? Procedure:
    ??? Database join:

    ??????? 很簡單,看看參數(shù)就明白了。
    ?
    ??? 3.4:Transform? 轉(zhuǎn)換 (嗯,重點)
    ??? 3.4.1:Select values: 對輸入的行記錄數(shù)據(jù) 的字段進行更改 (更改數(shù)據(jù)類型,更改字段名或刪除)
    ?????????? 數(shù)據(jù)類型變更時,數(shù)據(jù)的轉(zhuǎn)換有固定規(guī)則,可簡單定制參數(shù)。可用來進行數(shù)據(jù)表的改裝。
    ??? 3.4.2:Filter rows: 對輸入的行記錄進行 指定復雜條件 的過濾。
    ?????????? 用途可擴充sql語句現(xiàn)有的過濾功能。但現(xiàn)有提供邏輯功能超出標準sql的不多。
    ??? 3.4.3:Sort rows:對指定的列以升序或降序排序,當排序的行數(shù)超過5000時需要臨時表。
    ??? 3.4.4:Add sequence:為數(shù)據(jù)流增加一個序列,
    ?????????? 這個配合其它Step(Generate rows, rows join),可以生成序列表,如日期維度表(年、月、日)。
    ??? 3.4.5:Dummy:不做任何處理,主要用來作為分支節(jié)點。
    ??? 3.4.6:Join Rows:對所有輸入流做笛卡兒乘積。
    ??? 3.4.7:Aggregate:聚合,分組處理
    ??? 3.4.8:Group by:分組
    ?????????? 用途可擴充sql語句現(xiàn)有的分組,聚合函數(shù)。但我想可能會有其它方式的sql語句能實現(xiàn)。
    ??? 3.4.9:Java Script value:使用mozilla的rhino作為腳本語言,并提供了很多函數(shù),用戶可以在腳本中使用這些函數(shù)。
    ??? 3.4.10: Row Normaliser:該步驟可以從透視表中還原數(shù)據(jù)到事實表,
    ?????????? 通過指定維度字段及其分類值,度量字段,最終還原出事實表數(shù)據(jù)。
    ??? 3.4.11. Unique rows:去掉輸入流中的重復行
    ?????????? 在使用該節(jié)點前要先排序,否則只能刪除連續(xù)的重復行。?
    ??? 3.4.12. Calculator:提供了一組函數(shù)對列值進行運算,
    ?????????? 所介紹,使用該方式比用戶自定義JAVA SCRIPT腳本速度更快。
    ??? 3.4.13. Merge Rows:用于比較兩組輸入數(shù)據(jù),一般用于更新后的數(shù)據(jù)重新導入到數(shù)據(jù)倉庫中。
    ??? 3.4.14. Add constants:增加常量值。
    ?????????? 這個我沒弄明白它的用法???
    ??? 3.4.15. Row denormaliser:同Normaliser過程相反。
    ??? 3.4.16. Row flattener:表扁平化處理
    ?????????? 指定需處理的字段和扃平化后的新字段,將其它字段做為組合Key進行扃平化處理。
    ?
    ??? 3.5:Extra:除了上述基本節(jié)點類型外還定義了擴展節(jié)點類型?
    ??? 3.5.1:SPLIT FIELDS, 按指定分隔符拆分字段
    ??? 3.5.2:EXECUTE SQL SCRIPT,執(zhí)行SQL語句
    ??? 3.5.3:CUBE INPUT,
    ??? 3.5.4:CUBE OUTPUT等。
    ?????????? 這兩個沒明白是啥意思。
    ???
    ??? 3.6:其它
    ??? 存儲方式: 與Chef相同。
    ??? 數(shù)據(jù)源(Connection);見后。
    ??? Hops:setp連接起來,形成Hops。
    ??? Plugin step types等節(jié)點:這個沒仔細看,不知如何制作Plugin step。
    ??? LogView:可查看執(zhí)行日志。
    ?
    ?
    四:Pan——轉(zhuǎn)換的執(zhí)行工具

    ??? 命令行執(zhí)行方式,可以執(zhí)行由Spoon生成的轉(zhuǎn)換任務。
    ??? 同樣,不支持調(diào)度。
    ??? 參數(shù)與Kitchen類似,可參見Pan的文檔。
    ?
    ?
    五:其它

    ??? Connection:
    ??? 可以配置多個數(shù)據(jù)源,在Job或是Trans中使用,這意味著可以實現(xiàn)跨數(shù)據(jù)庫的任務。
    ??? 支持大多數(shù)市面上流行的數(shù)據(jù)庫。
    ?
    ??? 個人感覺:(本人不成熟的看法)

    ??? 1:轉(zhuǎn)換功能全,使用簡潔。作業(yè)項豐富,流程合理。但缺少調(diào)度。
    ??? 2:java代碼,支持的數(shù)據(jù)源范圍廣,所以,跨平臺性較好。
    ??? 3:從實際項目的角度看,和其它開源項目類似,主要還是程序員的思維,缺少與實際應用項目(專業(yè)領(lǐng)域)的更多接軌,當然,項目實施者的專注點可能在于一個平臺框架,而非實際應用(實際應用需要二次開發(fā))。
    ??? 4:看過了大多數(shù)源碼,發(fā)現(xiàn)源碼的可重用性不是太好(缺少大粒度封裝),有些關(guān)鍵部分好象有Bug。比如:個別class過于臃腫,線程實現(xiàn)的同步有問題。
    ??? 5:提供的工具有些小錯,如參數(shù)的容錯處理。
    ?
    ??? 好,對Kettle有了淺淺的了解,其它的容后再說。
    ?
    ?
    ?
    ******************************************************************
    至于細節(jié)的用法,可以參考網(wǎng)絡(luò)上導出都是的《ETL工具Kettle用戶手冊》
    另附一些Kettle的用法介紹:
    http://tech.it168.com/db/2008-03-21/200803211924754.shtml
    Kettle官網(wǎng):
    http://kettle.pentaho.org/
    ******************************************************************
    ?
    ?
    posted on 2009-06-19 22:18 decode360 閱讀(3529) 評論(2)  編輯  收藏 所屬分類: 11.BI

    評論

    # re: 開源項目 Kettle 介紹 [轉(zhuǎn)][未登錄] 2014-01-15 10:02 kevin
    Unexpected error during transformation metadata load
    No repository defined!  回復  更多評論
      

    # re: 開源項目 Kettle 介紹 [轉(zhuǎn)][未登錄] 2014-01-15 10:04 kevin
    Unexpected error during transformation metadata load
    No repository defined!
    java在調(diào)用數(shù)據(jù)庫資源庫中的JOB時出現(xiàn)這樣的異常怎么處理  回復  更多評論
      

    主站蜘蛛池模板: 欧洲美熟女乱又伦免费视频| 亚洲精品无码高潮喷水在线| 一级特级aaaa毛片免费观看| 亚洲精品成人无限看| 免费人成在线观看69式小视频| 亚洲国产AV一区二区三区四区| 亚洲国产激情一区二区三区| 亚欧免费一级毛片| 国产精品亚洲精品久久精品| 国产成人精品日本亚洲| 永久免费bbbbbb视频| 国产成人精品无码免费看| 亚洲av日韩av永久无码电影| 久久精品国产亚洲综合色| 精品国产一区二区三区免费看| 国产一区二区三区免费| 国产AV日韩A∨亚洲AV电影| 久久亚洲AV无码精品色午夜 | 日日摸日日碰夜夜爽亚洲| 亚洲中文字幕无码一区二区三区| 在线观看av永久免费| 在线观看片免费人成视频无码| 亚洲av无码专区在线观看下载 | 亚洲国产精品无码久久久秋霞1| 国产精品亚洲а∨无码播放| 国产精品免费小视频| 最近中文字幕大全中文字幕免费| 一级看片免费视频| 99久久国产亚洲综合精品| 亚洲AV日韩精品久久久久久| 亚洲精品tv久久久久久久久久| 一个人在线观看视频免费| 香港a毛片免费观看| 一级看片免费视频| 精品国产亚洲第一区二区三区| 亚洲精品熟女国产| 久久亚洲精品中文字幕无码| 亚洲一区日韩高清中文字幕亚洲| 特级淫片国产免费高清视频| 91免费资源网站入口| 120秒男女动态视频免费|