




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、 Kettle應用案例分析 趙貴兵Summary:Kettle是一款功能強大且最流行的ETL工具,該文通過Kettle在工程實踐中的一個應用場景,描述了Kettle應用方法和技巧,希望為其他應用提供參考。Key:Kettle;ETL;流程軟件:TP311 :A:1009-3044(2019)09-0095-02Pentaho公司的Data Integration產(chǎn)品,又名Kettle,是一款使用元數(shù)據(jù)驅(qū)動的功能強大的ETL工具,可以在Windows、Unix上運行。Kettle本身提供了強大的圖形界面設計器和豐富的組件,可以大大縮短數(shù)據(jù)抽取項目的開發(fā)周期,并且容易維護。Kettle設計器界面友
2、好,提供了工作流設計模式,能滿足各種場景的實現(xiàn),更詳細的說明和下載請參考Pentaho官網(wǎng):。下面詳細說明作者在實踐中應用Kettle時遇到的問題和解決方法,希望能為大家的實踐應用提供參考。1 應用案例說明在該應用中,需要準實時的將大量碎片文件中的行記錄保存到數(shù)據(jù)庫,并將部分記錄分發(fā)給下游模塊。文件中的行記錄在入庫前需要進行規(guī)整、轉(zhuǎn)換、過濾、匹配、合并記錄等復雜操作。下圖是對一批文件的處理流程:以下對該流程圖中的重要組件進行說明:1)“從結(jié)果獲取記錄”組件從父流程接收最多500個文件全路徑,然后由“列出字段”組件解析出每個文件的行和列的值,解析出的每一行記錄都保存有該行所在的文件名。如果該流程
3、每次只接收一個文件,那么在需要處理大量碎片文件的情況下,根本無法滿足性能要求,因為流程的加載和啟動占了一次流程執(zhí)行的絕大多數(shù)時間。2)“Movefile Step”組件是一個自定義組件,該組件的功能是判斷記錄中傳入的文件名如果發(fā)生變更,就將變更前的文件備份并刪除。Kettle自帶組件中沒有此功能的組件,考慮到需要在很多流程中使用,所以利用了Kettle的插件機制,定義了該組件。3)“記錄輸入格式錯誤”-“字段選擇”-“Movefile Step”,“記錄hit失敗”-“字段選擇”-“Movefile Step”,“記錄入庫錯誤”-“字段選擇”-“Movefile Step”,“空操作”-“字段
4、選擇”-“Movefile Step”,以上這些流程確保了所有記錄都會經(jīng)過“Movefile Step”組件,從而保證當一個文件的所有行被處理后,這個文件一定會執(zhí)行被備份和刪除操作。4)“字段轉(zhuǎn)換”是一個JS組件,被使用對字段值進行規(guī)整,增加需要的擴展字段。JS組件在測試中達到4000記錄/秒的處理效率,能滿足該應用場景的使用需求。在該應用中,有很多個業(yè)務流程,它們是并行執(zhí)行的,這樣不同業(yè)務的碎片文件能夠被并行處理?!癑ava Code”組件能提供更高的處理效率,但是編寫的代碼更復雜,在可以滿足處理效率的前提下,“JavaScript Code”是更好的選擇。5)“關聯(lián)外部資源”是一個“Jav
5、a Code”組件,雖然該組件編寫復雜,調(diào)試困難,但在這里使用它可以使流程繪制更簡潔,因為這里的業(yè)務邏輯太復雜,使用Java語言更容易描述清楚。如果只是使用Kettle的自帶組件,可能會繪出一條異常復雜的流程圖。關于如何為“Java Code”組件編寫代碼將在后文中描述。6)“關聯(lián)外部資源查詢”是一個“Java Code”組件,它將Kettle流中的字段值和內(nèi)存中緩存的字典進行匹配,如果匹配成功,則將字典中對應的值填入Kettle流。在該應用中有多個內(nèi)存字典,它們通過Job定時從數(shù)據(jù)庫中加載到Kettle應用程序內(nèi)存中,通過Java讀寫并發(fā)鎖避免讀寫沖突。7)“判斷插入還是更新”是一個“Jav
6、a Code”組件,它用于前后記錄的匹配。在該應用中,有“開始”記錄,有“結(jié)束”記錄,還有其他記錄,“開始”和“結(jié)束”記錄根據(jù)某些字段值可以判定為一對記錄,需要做合并。“開始”記錄會被記錄在內(nèi)存中,當“結(jié)束”記錄出現(xiàn)時,首先在內(nèi)存中查找對應的“開始”記錄,如果未找到則去數(shù)據(jù)庫中查找。記錄在內(nèi)存中的“開始”記錄,如果被“結(jié)束”記錄匹配上則被清除,或者超過時限也會被清除,這些被從內(nèi)存中清除的“開始”記錄在數(shù)據(jù)庫中仍然可以查找到,不會丟失。8)“插入或更新數(shù)據(jù)庫”是一個“Java Code”組件,它將一條輸入記錄拆分并插入多個數(shù)據(jù)庫表,并保證多個表的事務一致性,它同時還將入庫的記錄通過自定義的Soc
7、ket服務發(fā)生給Socket客戶端。自定義的Socket服務在應用初始化時創(chuàng)建并接收客戶端的連接。在該應用中,所有“Java Code”組件中使用的數(shù)據(jù)庫連接都是從c3p0連接池獲取的,這樣可以更好的管理和監(jiān)控數(shù)據(jù)庫連接。上圖的流程是一個實際應用中復雜ETL流程,它包含了許多典型的操作,如內(nèi)存匹配、入庫、通過Socket分發(fā)、備份并刪除文件等。作者通過巧妙的使用Kettle中的各種組件,將復雜的操作過程簡單化,在Kettle流程圖中清晰的表達了出來,同時也彰顯了Kettle的強大。2 應用技巧1)Kettle自帶的“Java Code”組件是一個功能強大的腳本組件,為Kettle功能擴展提供了
8、強力支持。如果直接在“Java Code”組件中編寫Java代碼,不但困難,而且容易出錯。如果代碼邏輯復雜,那么直接在Kettle界面上編寫幾乎不可行。一種方法是首先在IDE中編碼,然后將代碼同步到“Java Code”組件中。具體操作如下:1)在IDE中新建一個Java工程,將Kettle安裝目錄下lib目錄中的所有jar引入該工程。新建一個Java類,該類繼承Kettle的TransformClassBase類。當在IDE中編寫完成后,將Java類中“import”部分和“processRow”方法的代碼拷貝到“Java Code”組件即可,如果除“processRow”外,還在該類中新建
9、了其他方法,也要將這些方法一并拷貝到“Java Code”組件中。2)“Java Code”組件中的Java代碼和它引用的其他代碼中不能使用Java模板類功能,如不能使用“java.util.List”,而只能用“java.util.List”,在實際使用時需將“java.util.List”中的對象做強制轉(zhuǎn)換,其他Java類同理。3)從Kettle中配置的數(shù)據(jù)庫中獲取c3p0連接池所需的數(shù)據(jù)庫信息,代碼如下:TransMeta transMeta = getTransMeta();DatabaseMeta dm = transMeta.findDatabase(getVariable(“db
10、name”, “defaultName”);String host = dm.getHostname();String port = dm.getDatabasePortNumberString();String db = dm.getDatabaseName();String username = dm.getUsername();String password = dm.getPassword();4)Kettle插件編寫和插件安裝,請參考該文檔:https:/Documentation/6.0/0R0/0V0。5)配置log4j日志,將log4j日志配置文件如“l(fā)og4j.xml”放在Kettle安裝目錄的classes目錄下,重啟Kettle即生效。6)添加第三方jar包到Kettle中,最直接的方法是將jar包放在Kettle安裝目錄下的lib目錄中,重啟Kettle即可。Reference:1 Pentaho Kettle源代碼.EB/OL.https:/pentaho/pentaho-kettle .2 Kettle安裝目錄/docs/English/welcome/index.html Kettl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 維修木橋施工方案模板
- 疏水性偏高嶺土-水泥復合材料的制備及耐久性研究
- 李可染雨意山水畫的用水技法研究
- 2025年大數(shù)據(jù)展現(xiàn)平臺項目建議書
- 創(chuàng)業(yè)補貼股東合同范例
- 會員設備采購合同范例
- 中國高等教育發(fā)展歷程
- 期末復習勝略指南
- 使用固定總價合同范例
- 上海租賃和合同范例
- 2024年國家公務員考試公共法律知識考試題庫及答案(共530題)
- 數(shù)字出版概論 課件 第一章 數(shù)字出版及其發(fā)展歷程
- 英語語言與文化智慧樹知到答案2024年華僑大學
- 2024年江蘇教師資格證中學綜合素質(zhì)試卷及解答
- Wonderware InTouch:報警與事件處理機制技術教程.Tex.header
- 《中國近現(xiàn)代史綱要》課件-第一章
- TSG+23-2021氣瓶安全技術規(guī)程
- 北京2024年北京服裝學院第一批人才招聘筆試歷年典型考題及考點附答案解析
- 第十六章 中國特色大國外交和推動構(gòu)建人類命運共同體 (1)附有答案
- 田園風光(教案)2023-2024學年美術二年級下冊
- 特種設備管理和作業(yè)人員崗位職責
評論
0/150
提交評論