Pentaho ETL工具Kettle轉(zhuǎn)換實(shí)現(xiàn)原理_第1頁
Pentaho ETL工具Kettle轉(zhuǎn)換實(shí)現(xiàn)原理_第2頁
Pentaho ETL工具Kettle轉(zhuǎn)換實(shí)現(xiàn)原理_第3頁
Pentaho ETL工具Kettle轉(zhuǎn)換實(shí)現(xiàn)原理_第4頁
Pentaho ETL工具Kettle轉(zhuǎn)換實(shí)現(xiàn)原理_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

關(guān)于PentahoETL工具Kettle轉(zhuǎn)換實(shí)現(xiàn)原理的研究?ETL和Kettle簡(jiǎn)介ETL即數(shù)據(jù)抽取(Extract)、轉(zhuǎn)換(Transform)、裝載(Load)的過程。它是構(gòu)建數(shù)據(jù)倉庫的重要環(huán)節(jié)。數(shù)據(jù)倉庫是面向主題的、集成的、穩(wěn)定的且隨時(shí)間不斷變化的數(shù)據(jù)集合,用以支持經(jīng)營管理中的決策制定過程。Kettle是”KettleE.T.T.L.Envirnonment”只取首字母的縮寫,這意味著它被設(shè)計(jì)用來幫助你實(shí)現(xiàn)你的ETTL需要:抽取、轉(zhuǎn)換、裝入和加載數(shù)據(jù);翻譯成中文名稱應(yīng)該叫水壺,名字的起源正如該項(xiàng)目的主程序員MATT在一個(gè)論壇里說的哪樣:希望把各種數(shù)據(jù)放到一個(gè)壺里然后以一種指定的格式流出。Kettle的四大塊:Chef——工作(job)設(shè)計(jì)工具(GUI方式)Kitchen 工作(job)執(zhí)行器(命令行方式)Spoon 轉(zhuǎn)換(transform)設(shè)計(jì)工具(GUI方式)Pan 轉(zhuǎn)換(trasform)執(zhí)行器(命令行方式)Spoon是一個(gè)圖形用戶界面,它允許你運(yùn)行轉(zhuǎn)換或者任務(wù),其中轉(zhuǎn)換是用Pan工具來運(yùn)行,任務(wù)是用Kitchen來運(yùn)行。Pan是一個(gè)數(shù)據(jù)轉(zhuǎn)換引擎它可以執(zhí)行很多功能,例如:從不同的數(shù)據(jù)源讀取、操作和寫入數(shù)據(jù)。Kitchen是一個(gè)可以運(yùn)行利用XML或數(shù)據(jù)資源庫描述的任務(wù)。通常任務(wù)是在規(guī)定的時(shí)間間隔內(nèi)用批處理的模式自動(dòng)運(yùn)行下面將具體介紹Pan,和Kitchen在ETL中的實(shí)現(xiàn)過程。?數(shù)據(jù)轉(zhuǎn)換原理及具體實(shí)現(xiàn)過程大致步驟如下:轉(zhuǎn)換的過程中(在windows環(huán)境下),首先會(huì)調(diào)用Pan.bat,這一步主要是做一些初始化,連接驗(yàn)證,環(huán)境設(shè)置,檢查之類;然后在Pan的最后一步會(huì)調(diào)用launcher.jar包,這個(gè)包用于啟動(dòng)JDBC驅(qū)動(dòng),并向JDBC傳入相關(guān)連接信息和參數(shù),然后開始傳數(shù)據(jù),最后是完成數(shù)據(jù)傳輸,關(guān)閉相關(guān)協(xié)議,寫入日志。首先來看Kitchen的實(shí)現(xiàn),Kitchen在一個(gè)job中一般包含以下幾個(gè)步驟:轉(zhuǎn)換:指定更細(xì)的轉(zhuǎn)換任務(wù),通過Spoon生成。通過Field來輸入?yún)?shù);SQL:sql語句執(zhí)行;FTP:下載ftp文件;郵件:發(fā)送郵件;檢查表是否存在;檢查文件是否存在;執(zhí)行shell腳本:如dos命令。批處理:(注意:windows批處理不能有輸出到控制臺(tái))。Job包:作為嵌套作業(yè)使用。SFTP:安全的Ftp協(xié)議傳輸;HTTP方式的上/下傳。以下是一個(gè)簡(jiǎn)單的ETL過程:

建立與目標(biāo)庫的連接開貽之前進(jìn)訂初貽化?、辺括字符集驗(yàn)證2眼語法驗(yàn)氐參數(shù)驗(yàn)證,口眈痿接通信號(hào)迸,検查源梓中茨是否存在等START完成傳輸寫入日志Transformation當(dāng)然』在發(fā)送數(shù)據(jù)之前會(huì)性檢查目標(biāo)表中呈否有對(duì)應(yīng)的表存在如果表中有大數(shù)據(jù)字段,洌妒團(tuán)片,會(huì)先調(diào)用或批處罐充磁⑹本轡上整酊,然后在在表中插入數(shù)餐J ■ 建立與目標(biāo)庫的連接開貽之前進(jìn)訂初貽化?、辺括字符集驗(yàn)證2眼語法驗(yàn)氐參數(shù)驗(yàn)證,口眈痿接通信號(hào)迸,検查源梓中茨是否存在等START完成傳輸寫入日志Transformation當(dāng)然』在發(fā)送數(shù)據(jù)之前會(huì)性檢查目標(biāo)表中呈否有對(duì)應(yīng)的表存在如果表中有大數(shù)據(jù)字段,洌妒團(tuán)片,會(huì)先調(diào)用或批處罐充磁⑹本轡上整酊,然后在在表中插入數(shù)餐J ■ :翌」口眈馳動(dòng)根搖倍入的咆養(yǎng)數(shù)定位3標(biāo)庫郴箜牧到的w網(wǎng)Statement類:■!■':JexcuteQueryT^法執(zhí)行'>同時(shí)用getTarget0.芳注取穆弓訴庫連接「然后爰送數(shù)據(jù)"轉(zhuǎn)換一開始就會(huì)調(diào)用Pan下面一段代碼是基于JDBC的數(shù)據(jù)庫訪問的經(jīng)典總結(jié),簡(jiǎn)單地說,JDBC可做三件事:與數(shù)據(jù)庫建立連接、發(fā)送SQL語句并處理結(jié)果:Connectioncon=DriverManager.getConnection("jdbc:odbc:wombat","login","password");Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");while(rs.next()){intx=rs.getInt("a");Strings=rs.getString("b");floatf=rs.getFloat("c");}JDBC是個(gè)"低級(jí)"接口,也就是說,它用于直接調(diào)用SQL命令。在這方面它的功能極佳,并比其它的數(shù)據(jù)庫連接API易于使用,但它同時(shí)也被設(shè)計(jì)為一種基礎(chǔ)接口,在它之上可以建立高級(jí)接口和工具。高級(jí)接口是"對(duì)用戶友好的"接口,它使用的是一種更易理解和更為方便的API,這種API在幕后被轉(zhuǎn)換為諸如JDBC這樣的低級(jí)接口。在關(guān)系數(shù)據(jù)庫的"對(duì)象/關(guān)系"映射中,表中的每行對(duì)應(yīng)于類的一個(gè)實(shí)例,而每列的值對(duì)應(yīng)于該實(shí)例的一個(gè)屬性。?總結(jié)Kettle實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換,主要是通過JDBC驅(qū)動(dòng),建立連接,加載數(shù)據(jù),傳輸數(shù)據(jù),在這個(gè)過程中可能會(huì)調(diào)用XML腳本或批處理,大文件的話會(huì)用到FTP或HTTP方式上傳/下傳數(shù)據(jù)。?關(guān)于JDBC導(dǎo)致內(nèi)存溢出的問題通過網(wǎng)上查閱資料和自己的理解得出了JDBC導(dǎo)致內(nèi)存溢出的問題的幾個(gè)原因OracleJDBC驅(qū)動(dòng),在大數(shù)據(jù)量查詢時(shí)會(huì)使用大量的內(nèi)存如果控制不好很容易導(dǎo)致Java出現(xiàn)Outofmemory錯(cuò)誤耗內(nèi)存有多方面的原因:OracleJDBC在從后臺(tái)取數(shù)據(jù)時(shí),為每行所設(shè)置的buffer是以列的最大size來計(jì)算分配內(nèi)存的.當(dāng)沒有定義size,就取最大值,這導(dǎo)致某些字段,例如AGE之類,在加載到buffer中的時(shí)候本來只需要很小的內(nèi)存開銷,這里就花了更多的內(nèi)存去讀該行數(shù)據(jù)。但是,針對(duì)于可以指定大小的字段,ORACLE還是會(huì)根據(jù)具體SIZE分配內(nèi)存。由些可見,作為一個(gè)數(shù)據(jù)庫表的設(shè)計(jì)者,在定義表的列類型時(shí),不能隨便:應(yīng)該遵循最小使用原則,否則會(huì)數(shù)據(jù)庫的使用者帶來不少的麻煩.比如能用varchar2的就不要用clob,用varchar2時(shí)不要隨便定義一個(gè)很大的size,比如usernamevarchar(1024),username是不可能定義為這么長(zhǎng)的.新的JDBC標(biāo)準(zhǔn),增加了statementclientpool功能.對(duì)于一個(gè)處理業(yè)務(wù)的JDBC程序,這個(gè)功能肯定是一個(gè)很好的,以內(nèi)存換速度的方法.不過畢竟不是所有的JDBC使用程序都是這樣的JVM最大內(nèi)存設(shè)置。另JVM啟動(dòng)時(shí)最大內(nèi)存也不能太小了?有一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論