第一次寫博客,心里有點小激動,肯定有很多需要改進的地方,望海涵。
kettle算是我相對較為深入研究過的開源軟件了,也是我最喜歡的開源軟件之一,它可以完成工作中很多體力勞動,在ETL數據抽取方面得到了廣泛的使用。我本身對kettle的各個控件使用也不是很熟悉,只會使用最常見的部分控件,就是這樣簡單的使用也被它的美深深的吸引住了。
好了,進入正題,這里假設你熟悉java開發、git一般使用、kettle一般使用。kettle源碼之前托管在kettle官方的svn上,后來遷移到了github上,在github上的地址是:https://github.com/pentaho/pentaho-kettle,建議注冊自己的github賬戶,然后將kettle項目fork一份到自己用戶下,接著進入工作目錄(如:E:/workspace)使用如下命令將代碼克隆到本地。
git clone https://github.com/pentaho/pentaho-kettle
下載代碼的同時你可以到:http://community.pentaho.com/PRojects/data-integration/ 這個地址下載最新的kettle發布版。都下載完成后按以下步驟最終可以成功運行kettle源碼。建議使用jdk7或以上版本。
上述就是我運行kettle源碼的方式,方式肯定有很多,這種方式應該不算難,特別是依賴jar的解決,kettle使用的是ant管理項目的,一來我平常都是使用maven管理項目,對ant不太熟悉,二來ant方式很多jar包根本下載不到。
這里只是為了分享下自己運行kettle源碼的方式,說實話剛接觸kettle源碼時真沒運行起來,隔了好長一段時間后再次嘗試才成功運行的。若想用上述方式運行又覺得麻煩的可以先按上述方式創建好以kettle命名的用戶庫。然后從我的github上下載配置好的kettle項目,理論上下載下來就可以用。方式如下:
后續我將介紹kettle源碼結構,分享部分kettle控件改進,還會將自己定制化開發kettle(將kettle的部分功能封裝到web應用中)的過程中寫的kettle定制開發工具類分出來,大家一起進步。
下面是在使用kettle過程中覺得需要改進的地方:
1.文件加載如內存功能修改,文件內容默認為二進制,這樣就可以將圖片、壓縮文件等復制,存入數據庫等。7.文件加載如內存功能的convertRowMeta和outputRowMeta都沒有考慮編碼stringEncoding。相關克隆也都沒有考慮編碼。2.轉換中,支持#{}方式取前一個步驟中的字段14.java腳本和Javascript腳本(希望能將json都對象使用)都還太難用,好好改進后kettle就牛逼了。3.java腳本支持用戶新增導入包4.Excel 07版支持不好,07版excel兩種解析工具效果都不好,poi大文件會內存溢出,poi stream有如17-19問題。16.excel輸入控件獲取sheet時本可以直接獲取,結果弄得比較復雜。17.poi streaming存在bug,會占用文件。18.poi streaming以string讀取時間時為數字。19.poi streaming部分列為空時數據錯亂。5.抽取ui部分方法為工具類,方便web定制開發。6.數據庫只要連接失敗一次,后面即使數據恢復正常,kettle的連接也一直失敗了。可以改為設置定時重連,涉及面較廣。8.rar壓縮文件的處理,解壓控件新增選項:保留目錄結構,默認勾選,不勾選則全部文件解壓到指定目錄。9.解壓控件的解壓成功后移動到指定目錄和刪除文件功能有bug,他是對設定的根目錄操作。10.zip解壓中文目錄亂碼問題,kettle使用的是jdk自帶解壓工具類,暫時修改vfs的jar,新增編碼設置,jdk6不支持設置編碼,需要升級到jdk7.11.zip解壓不支持密碼,可以更換zip解壓工具為zip4j12.壓縮控件支持加密,可統一設置密碼,也可從上一個流中獲取。20.解壓控件新增支持rar解壓。13.添加操作zookeper控件,可以監控節點變化等。15.新增dmp入庫控件,用腳本入庫還是不太方便。21.ftp下載控件檢測目錄存在時,中文目錄都會失敗,因為檢測目錄時并沒有使用用戶設定的編碼。
新聞熱點
疑難解答