kettle轉換和作業插件開發及調試
這是一篇幾年前寫下的文檔,最近打算根據這篇文檔重寫一下kettle插件的教程。結果各種理由,一推再推。今天索性將這篇文檔發布出來,分享給大 家,例子等有空再補上。這是一篇基于kettle3.2基礎上完成的kettle插件文檔。然而現在最新版的kettle的界面已經完全變了樣了,但是那 些組件還是那么熟悉。對數據處理稍微熟悉點的應該對kettle都不陌生,kettle是一個快速格式化和數據抽取的工具。好吧,入正題:
如果你對kettle插件感興趣可以到官網查看更多的資料:http://www.pentaho.com/product/data-integration。
最新源碼:https://github.com/pentaho/pentaho-kettle/
kettle3.2源碼:http://sourceforge.net/projects/pentaho/files/Data%20Integration/3.2.0-stable/
一、開發環境:
工具:Eclipse、MyEclipse
JDK1.5或以上
依賴包:lib/kettle-core.jar
lib/kettle-db.jar
lib/kettle-engine.jar
lib/kettle-ui-swt.jar
libswt/win32/swt.jar
二、轉換開發步驟:
1、復制org.pentaho.di.trans.steps.dummytrans包到指定包名。dummytrans包包含4個文件。 DummyTrans.java, DummyTransData.java, DummyTransMeta.java, Messages.java。
2、使用eclipse里的Refactor(重構)功能,把 DummyTrans* .java改名成 Mytrans *.java。然后實現相應的方法即可。
(1)MytransDialog.java:產生對話框的對象。
(2)Mytrans.java:負責數據處理和轉換,主要的轉換邏輯都在這里實現。
(3)MytransMeta.java:負責元數據處理。包括加載xml轉換文件,校驗。
(4)MytransData.java:包含數據處理所涉及到的具體數據。
3、在org.pentaho.di.trans.steps.mytrans包下面創建messages目錄,在里面添加相關的資源文件。例如,messages_en_US.properties,messages_zh_CN.properties等等。
4、將程序打成jar包。
5、準備一個png格式的圖片。
6、編寫插件xml(plugin.xml)
<?xml version="1.0" encoding="UTF-8"?> <plugin id="MyTransExample" -->組件ID(必須唯一) iconfile="icon.png" -->顯示的圖片 description="My Trans Example" -->轉換描述 tooltip="This is a trans example!" -->提示信息 category="Input" --->插件展現位置 classname="com.test.mytrans.MyTransMeta"> --->入口類 <libraries> <library name="kettle-plugin.jar"/> --->插件jar包 </libraries> <localized_category> --->插件展現位置 <category locale="en_US">Input</category> <category locale="zh_CN">輸入</category> </localized_category> <localized_description> --->插件描述 <description locale="en_US">This is a trans plugin example!</description> <description locale="zh_CN">這是一個插件轉換的例子</description> </localized_description> <localized_tooltip> --->提示信息 <tooltip locale="en_US">This is a trans plugin example!</tooltip> <tooltip locale="zh_CN">插件轉換例子</tooltip> </localized_tooltip> </plugin>
將編譯好的jar包、png圖片和xml文件置于kettle安裝目錄下的./plugins/steps/myForder(自定義一個文件夾)下,重啟kettle即可。
三、作業開發步驟:
1、分別復制org.pentaho.di.job.entries.abort、org.pentaho.di.job.entries.abort.messages和org.pentaho.di.ui.job.entries.abort包到指定包名
2、使用eclipse里的Refactor(重構)功能,把JobEntry* .java改名成 MyJobEntry *.java。然后實現相應的方法即可。
3、修改國際化配置文件,。例如,messages_en_US.properties,messages_zh_CN.properties等等。
4、將程序達成相應jar包。
5、準備一個png格式的圖片。
6、編寫插件xml(plugin.xml)
與轉換plugin.xml類似。可參考kettle安裝目錄。./plugins/jobentries/DummyJob目錄下的plugin.xml文件
7、將編譯好的jar包、png圖片和xml文件置于kettle安裝目錄下的./plugins/jobentries/myForder(自定義一個文件夾)下,重啟kettle即可。
四、插件開發調試
1、Link Source調試:
(1)在Kettle3.2工程下面,進入plugins->steps目錄,發現里面有個DummyPlugin目錄,其就是kettle官方提供的外部轉換插件,DPL.png、dummy.jar、plugin.xml,就是一個完整插件所需要的東西。
(2)在與DummyPlugin同級目錄里面,建立文件夾TemplateStep, 將TemplateStepPlugin工程下面的icon.png、plugin.xml文件拷貝至此,jar包就不用了
(3)最重要的一步來了,大家右擊工程Kettle 3.2,選擇屬性Properties, 然后在左手邊選擇Java Build Path, 然后在上面的選項卡里面選擇Source,此時右邊就有幾個按鈕,
點擊Link Source按鈕,設置好你的插件源碼目錄以及目錄名字,見下圖:
運行。 關聯好之后,咱們找到kettle的入口運行類Spoon.java,大家可以通過快捷鍵ctrl+shift+R找出此類選擇調試運行即可,進入kettle工作臺,打開測試文件test.ktr.
2、kettle遠程調試
(1)遠程調試的關鍵是首先你的在kettle啟動配置里面設置遠程調試參數,然后在eclipse里面設置遠程調試監控的端口號,這樣就ok了。
(2)進入pdi-ce-3.2.0-stable.zip解壓出來的目錄,編輯啟動配置文件Spoon.bat,linux下當然是spoon.sh
在文件里面加入這么一句話:
set OPT=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8285
位置參見下圖:
點擊Spoon.bat,進入kettle工作臺
(3)打開eclipse,進入菜單Run——>Debug Configurations,選擇左邊的Remote Java Application,右鍵新建一個遠程調試應用程序,設置如下圖,
端口就是上面參數里面的端口8285,一切ok,選擇選擇下面的debug按鈕。
(4)在kettle工作臺,運行剛才的測試轉換文件 test.ktr,eclipse開始監聽調試了,大家斷點設置就可。