这是一篇几年前写下的文档,最近打算根据这篇文档重写一下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=

位置参见下图:


点击Spoon.bat,进入kettle工作台

(3)打开eclipse,进入菜单Run——>Debug Configurations,选择左边的Remote Java Application,右键新建一个远程调试应用程序,设置如下图,

端口就是上面参数里面的端口8285,一切ok,选择选择下面的debug按钮。

(4)在kettle工作台,运行刚才的测试转换文件 test.ktr,eclipse开始监听调试了,大家断点设置就可。

注:部分内容来自互联网,由于时间久远没有记录原文出处。如果您知道可以联系我加上。谢谢!

kettle转换和作业插件开发及调试的更多相关文章

  1. Kettle转换或作业乱码

    结果这样做还是乱码,其实这和

  2. kettle删除资源库中的转换或者作业

    在资源库中新建转换,作业都很简单,那么加入现在不需要其中某个转换或者作业该怎么办呢? 下图是已经存在的转换跟作业 现在需要删除aa这个转换 操作步骤如下: 1.工具----资源库----探索资源库 出 ...

  3. kettle转换提高性能拆分转换步骤_20161201

    今天是12月1号,前期用kettle做了月报自动报表的转换和作业,今天运行时候发现一个报表的程序跑起来失败,心里很纳闷,上过月刚跑的没问题,怎么会无缘无故的失败. 通过看kettle运行日志,发现一个 ...

  4. kettle转换添加hbase-output无法获取hbase表

    问题:kettle转换添加hbase-output无法获取hbase表 win本机安装kettle,本机虚拟机三台,root用户安装有jdk.zookeeper.hadoop.hbase kettle ...

  5. java中调用kettle转换文件

    java中调用kettle转换文件 通过命令行也能够调用,然后java中调用命令行代码也能够.这样没有和java代码逻辑无缝集成.本文说明kettle5.1中假设通过其它API和java代码无缝集成: ...

  6. kettle转换之多线程

    kettle转换之多线程   ETL项目中性能方面的考虑一般是最重要的.特别是所讨论的任务频繁运行,或一些列的任务必须在固定的时间内运行.本文重点介绍利用kettle转换的多线程特性.以优化其性能. ...

  7. kettle在linux下面用于shell脚本执行:转换或者作业

    1 将windows下面创建好的转换,放到Linux某一个文件夹下面.如:把0816_em.ktr文件放到/home/cfj/kettle/testdemo下面. 注意里面的数据库用户名和密码可能需要 ...

  8. kettle菜鸟学习笔记2----第一个kettle转换的建立及执行

    相关概念: Kettle数据清洗是采用元数据(Meta-data)驱动,以数据流的方式进行的,数据从数据源(数据库/文件等)在一系列相连的step之间依次向后流动,各个step完成对流经该step的数 ...

  9. Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍

    转换机制 每个转换步骤都是ETL数据流里面的一个任务.转换步骤包括输入.处理和输出.输入步骤从外部数据源获取数据,例如文件或者数据库:处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤.输出步骤 ...

随机推荐

  1. GROUP_CONCAT将里面拼接的字符串排序

    SELECT oam.id , GROUP_CONCAT(oacm.name) category FROM om_article_manage oam LEFT JOIN om_article_cat ...

  2. linux-crontab定时任务

    crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行.通常 ...

  3. cocoapods安装

    什么是cocoapods CocoaPods是一个用来帮助我们管理第三方依赖库的工具.它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我 ...

  4. 一篇对iOS音频比较完善的文章

    转自:http://www.cnblogs.com/iOS-mt/p/4268532.html 感谢作者:梦想通 前言 从事音乐相关的app开发也已经有一段时日了,在这过程中app的播放器几经修改我也 ...

  5. JS操作Unicode编码的emoji表情显示在页面

    前言:项目中用到了emoji表情,后端传递数据时直接是以Unicode形式,在页面总是无法展示,找尽各种方法总算是试出了一种,虽然达到效果但是并不是特别理解其中的原理并且无比笨拙,贴在这用作笔记,如果 ...

  6. UVA725

    虽然是暴力求解,但是也要观察条件,尽量提高效率.如本题,原本要枚举10个数,但是分析可知通过枚举fghij就可以了. #include<stdio.h> #include<strin ...

  7. 前端CDN公共库

    通过使用公共的CDN脚本和样式库,可以在一定程度上加速访问.节省服务器流量.提升你的网站用户体验.本文将介绍国内比较常用的几种免费的CDN库,包括百度.新浪.360.又拍和七牛等. 百度CDN公共库 ...

  8. maven log4g 用法

    <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> & ...

  9. 个人整理的一些web前端面试题

    1.一个网页从开始请求到最终显示的完整过程? 获取输入网址 将网址解析为ip地址 建立tcp连接 发送http请求 返回响应 解析并显示. 2.简述对CSS盒子模型的理解? width=margin- ...

  10. 逆向工程学习第四天--Windows栈溢出保护机制(GS)原理及绕过测试

    GS简介: Windows的缓冲区安全监测机制(GS)可以有效的阻止经典的BOF攻击,因为GS会在函数调用前往函数栈帧内压入一个随机数(canary),然后等函数返回前,会对canary进行核查,判断 ...