kettle轉換和作業插件開發及調試

jopen 9年前發布 | 39K 次閱讀 數據挖掘 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轉換和作業插件開發及調試

運行。 關聯好之后,咱們找到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

位置參見下圖:

kettle轉換和作業插件開發及調試 點擊Spoon.bat,進入kettle工作臺

(3)打開eclipse,進入菜單Run——>Debug Configurations,選擇左邊的Remote Java Application,右鍵新建一個遠程調試應用程序,設置如下圖,

kettle轉換和作業插件開發及調試

端口就是上面參數里面的端口8285,一切ok,選擇選擇下面的debug按鈕。

(4)在kettle工作臺,運行剛才的測試轉換文件 test.ktr,eclipse開始監聽調試了,大家斷點設置就可。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!