yq.aliyun.com

简介:

 这是一篇几年前写下的文档,最近打算根据这篇文档重写一下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开始监听调试了,大家断点设置就可。





本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/4601935.html,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
Java API Nacos
找不到`com.alibaba.nacos.api.utils.NetUtils`类
找不到`com.alibaba.nacos.api.utils.NetUtils`类
367 0
|
8天前
|
Java 数据库连接 数据库
org.apache.ibatis.session.AutoMappingUnknownColumnBehavior
org.apache.ibatis.session.AutoMappingUnknownColumnBehavior
15 0
|
Java Spring
org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
54 0
程序包androidx.support.annotation不存在/import androidx.v7.app.AppCompatActivity;报错
程序包androidx.support.annotation不存在/import androidx.v7.app.AppCompatActivity;报错
321 0
Plugin with id 'com.android.application' not found
Plugin with id 'com.android.application' not found
94 0
|
数据库 数据安全/隐私保护
|
Java Apache
org.apache.commons.fileupload.FileUploadBase$SizeL
上传94M的视频出现异常如下: [@APPNAME@] ERROR [http-80-3] MultiPartRequest.parse(130) | org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (102147245) exceeds the configured maximum (50097152) [@APPNAME@] ERROR [http-80-3] FileUploadInterceptor
338 0
|
关系型数据库 Apache
AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@7b3106ec)
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/79714935 ...
1606 0
|
SQL 关系型数据库 MySQL