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開始監聽調試了,大家斷點設置就可。

注:部分內容來自互聯網,由於時間久遠沒有記錄原文出處。如果您知道可以聯系我加上。謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM