`

Kettle转换步骤插件开发简介

阅读更多
也可参见本人百度文库Pantaho Kettle插件开发

1       Kettle

1.1     Kettle介绍

    社区版kettle下载地址:http://community.pentaho.com/projects/data-integration/ 

 

       

#pdi-ce-7.0.0.0-25下载
wget https://netix.dl.sourceforge.net/project/pentaho/Data%20Integration/7.0/pdi-ce-7.0.0.0-25.zip

#下载的pdi-ce-7.0.0.0-25需要JDK1.8环境,修改解压后的pdi-ce-7.0.0.0-25目录下的文件data-integration/set-pentaho-env.bat,在首行添加
set JAVA_HOME=D:\Java\jdk1.8.0_121

 

Kettle也叫PDI,2006kettle加入了开源的BI组织Pantaho,正式命名为PDI(Pantaho Data Integeration),kettle是“Kettle E.T.T.L.Envirnoment”的缩写。

kettle是一款国外开源的ETL(Extract Transform Load)工具,纯java编写,可以在WindowLinuxUnix上运行,绿色无需安装,被设计用来抽取、转换、装入和加载数据,可以形象的理解为将各种数据放入到一个壶里面然后以一种指定的格式流出来。

 

Kettle中有两种脚本文件transformationjobtransformation完成针对数据的基础转换,job则完成整个工作流的控制。

1.2     Kettle组件

  1. Spoon:一个图形用户界面,用来运行transformation(转换)和job(任务),其中transformation是用Pan工具来运行,任务是用Kitchen来运行。
  2. Pan:一个数据转换引擎,主要用来执行数据源读取,操作和写入数据等等功能。
  3. Kitchen:一个运行任务(利用XML或数据资源库描述)的工具。

1.3     Kettle插件

Kettle本身提供了很多组件,多个组件一起构成一个transformation(转换),多个转换一起构成一个job(任务)。kettle的组件已经非常丰富,在组件不满足需求时可以在kettle上面开发自己的组件,kettle支持的组件开发如下:

 

注意:本文档以下内容只讲解“转换步骤插件开发

2       Kettle转换步骤插件开发

2.1     Kettle转换步骤插件开发概述

2.1.1Kettle转换步骤插件至少需要实现四个接口

org.pentaho.di.trans.step.StepMetaInterface:元数据的处理,加载xml,校验,主要是对一个步骤的定义的基本数据。

org.pentaho.di.trans.step. StepDataInterface:数据处理涉及的具体数据,以及对数据的状态的设置和回收。

org.pentaho.di.trans.step. StepInterface:负责数据处理,转换和流转。这里面主要由processRow()方法来处理。

org.pentaho.di.trans.step. StepDialogInterface:提供GUI/dialog,编辑步骤的元数据。

对于以上四个接口的实现,都有相应的基类,具体的步骤只需要继承基类和实现相应的接口即可。

2.1.2Kettle转换步骤插件各个类命名推荐规则

stepInterface的实现类以插件的功能相关命名:*.java

stepDataInterface的实现类:*Data.java

stepMetaInterface实现类:*Meta.java

StepDialogInterface的实现类:*Dialog.java

2.2     Kettle转换步骤插件开发例子

本例子主要实现功能:将添加的HTTP URL列表逐个进行W3C XML规范进行校验,将符合XML规范的HTTP URL列表刷选出来。

2.2.1Kettle转换步骤插件初步开发

1.在“src-plugins”下创建文件夹“kettle-urlContentValidate-plugin”,然后依次创建上面四个接口类的实现,如下图:

 

2.在“plugins”子文件夹“step”下建立文件夹“UrlContentValidatePlugin”,增加的配置文件截图如下:

 

3.修改“plugin.xml”配置内容如下

 

4.将创建的源代码加入“java build path

2.2.2Kettle转换步骤插件功能完善

2.2.2.1Kettle转换步骤插件入口UrlContentValidatePluginMeta

Kettle转换步骤插件入口UrlContentValidatePluginMeta本身提供基础数据的配置,同时负责调用UrlContentValidatePluginDialog展现界面,负责调用UrlContentValidatePluginData保存中间处理数据,负责调用UrlContentValidatePlugin在运行的过程中遍历行级数据。

2.2.2.1.1       入口调用UrlContentValidatePluginDialog

<!--[if !supportLists]-->1.       <!--[endif]-->每一个开发的转换kettle都会为之添加一个代理,让我们看看代理的代码

 

从上面的代码我们看到代理会通过StepMetaInterface实现类中的getDialogClassName()找到SWT界面类名称UrlContentValidatePluginDialog,然后反射SWT界面类中的固定方法public StepDialogInterface getDialog(Shell shell, StepMetaInterface meta,TransMeta transMeta, String name)

 

<!--[if !supportLists]-->2.       <!--[endif]-->接着看看org.pentaho.di.trans.stepBaseStepMeta中的getDialogClassName()

 

<!--[if !supportLists]-->3.       <!--[endif]-->本例中符合包命名格式,直接在在UrlContentValidatePluginMeta中添加如下内容

2.2.2.1.2       入口调用UrlContentValidatePluginData

重写UrlContentValidatePluginMetagetStepData()

2.2.2.1.3       入口调用UrlContentValidatePlugin

重写UrlContentValidatePluginMetagetStep(StepMeta stepMeta,StepDataInterface stepDataInterface, int copyNr,TransMeta transMeta, Trans trans)

2.2.2.2Kettle转换步骤插件界面UrlContentValidatePluginDialog

2.2.2.2.1      界面开发

开发界面主要是在UrlContentValidatePluginDialog里面open()方法中填充代码,简单截图如下:

2.2.2.2.2       界面数据传入到UrlContentValidatePluginMeta

 

在点击SWT界面的“确定”按钮事件监听中添加以下代码处理

 

UrlContentValidatePluginDialog中定义的input如下:

private  UrlContentValidatePluginMeta  input;

 

2.2.2.3Kettle转换步骤插件基础数据保存和解析

2.2.2.3.1       Kettle转换步骤插件基础数据XML格式保存和解析

<!--[if !supportLists]-->1.       <!--[endif]-->基础数据保存到XML,重写UrlContentValidatePluginMetagetXML()

 

<!--[if !supportLists]-->2.       <!--[endif]-->XML中解析基础数据,重写UrlContentValidatePluginMetaloadXML(Node stepnode, List<DatabaseMeta> databases,Map<String, Counter> counters)

 

<!--[if !supportLists]-->3.       <!--[endif]-->基础数据存储为XML数据截取图片如下

2.2.2.3.2       Kettle转换步骤插件基础数据资源库格式保存和解析

<!--[if !supportLists]-->1.       <!--[endif]-->基础数据保存到资源库,重写UrlContentValidatePluginMetasaveRep(Repository rep, ObjectId id_transformation,ObjectId id_step)

 

<!--[if !supportLists]-->2.       <!--[endif]-->资源库中解析基础数据,重写UrlContentValidatePluginMetareadRep(Repository rep, ObjectId id_step,List<DatabaseMeta> databases, Map<String, Counter> counters)

 

<!--[if !supportLists]-->3.       <!--[endif]-->基础数据保存到资源库截取图片如下

 

 

2.2.2.4Kettle转换步骤插件供给下转换步骤的元数据

1.重写UrlContentValidatePluginMetagetFields(RowMetaInterface inputRowMeta, String name, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space)

 

2.下一转换步骤获取元数据截图如下:

2.2.2.5Kettle转换步骤插件运行过程中遍历行级数据

重写UrlContentValidatePlugin中的processRow(StepMetaInterface smi, StepDataInterface sdi)

2.3     Kettle转换步骤插件部署

1.将文件夹“plugins”下“steps”下配置信息文件夹“UrlContentValidatePlugin”拷贝出来

 

2.打包插件jar

 

 

 

3.将打包的“kettle-urlContentValidate-plugin.jar”拷贝到1中的文件夹下,并修改“plugin.xml”依赖的jar,截图如下:

 

<!--[if !supportLists]-->4.       <!--[endif]-->将文件夹“UrlContentValidatePlugin”拷贝的kettle工具文件夹“kettle根目录\plugins\steps\”下面

 

<!--[if !supportLists]-->5.       <!--[endif]-->启动kettle更目录Spoon.bat,简单创建kettle并测试

分享到:
评论
3 楼 zilongzilong 2012-10-09  
quaile 写道
很可惜,文件打不开。提示文件已损坏并且无法修复.

兄弟,我试着下载下来看了下,能打开!
2 楼 quaile 2012-09-03  
很可惜,文件打不开。提示文件已损坏并且无法修复.
1 楼 zhuang183 2012-05-10  
多谢技术的共享~

相关推荐

    Pantaho Kettle转换步骤插件开发

    2 Kettle转换步骤插件开发 2.1 Kettle转换步骤插件开发概述 2.1.1 Kettle转换步骤插件至少需要实现四个接口 2.1.2 Kettle转换步骤插件各个类命名推荐规则 2.2 Kettle转换步骤插件开发例子 2.2.1 Kettle转换步骤...

    kettle插件开发(原创)

    kettle插件开发(原创) 首先是kettle介绍,然后是kettle目前支持的插件开发,接着转入正题以一个真实的kettle插件开发例子详细介绍kettle插件开发步骤,欢迎下载。

    Kettle转换中的Java代码步骤应用入门与实战

    Java代码步骤,位于Kettle转换的核心对象/脚本类别中,属于典型的需要编程基础才能掌控的步骤类型。而Java代码步骤,适用于熟悉Java语言的开发人员,用好这个步骤,需要对类、接口、多线程等语言相关知识有所掌握,...

    【kettle】10分钟搞定kettle源码部署

    本文档中操作是本人亲自操作,测试成功后的总结,测试中发现了各种...kettle以插件形式来实现每个转换步骤的工作,发行版中已经提供了常用的转换清洗插件,如果还不能满足业务需求的话,则可以自己开发相应插件实现。

    kettle7.1源码编译环境搭建

    本文档中操作是本人亲自操作,测试成功后的总结,测试中发现了各种...kettle以插件形式来实现每个转换步骤的工作,发行版中已经提供了常用的转换清洗插件,如果还不能满足业务需求的话,则可以自己开发相应插件实现。

    ETL工具Kettle用户手册及Kettle5.x使用步骤带案例超详细版

    ETL工具Kettle用户手册及Kettle5.x使用步骤带案例超详细版Kettle是一个开源项目,作为ETL工具,kettle提供了丰富的功能和简洁的图形化界面。作为免费开源的ETL工具,可以通过...kettle以插件形式来实现每个转换步骤……

    史上最强-Kettle-培训教程.pdf

    Kettle工具使用 培训教程 目录 ETL 简介 KETTLE 简介 KETTLE 安装和运行 KETTLE 菜单简介 KETTLE 案例讲解 控件介绍 日志介绍 一、ETL 简介 ETL 概念简介 ETL相关的质量特性 ETL 在数据仓库项目中的位置 二、kettle ...

    jsonparse-plugin-1.0.0.0-SNAPSHOT.jar

    该插件为kettle 自定义插件,基于kettle 8.2.0开发。该插件基于jsonpath可以做到对JSON 字符串中的字段提取,key值替换...使用步骤:将jar包放到data-integration\plugins\steps 下,载kettle 的转换中就可以看到使用。

    kettle抽取NC总账数据资源库

    操作步骤 1、拷贝 balance.ktr、gl_docfree.ktr、subject.ktr、job.kjb 2、修改转换里数据源配置 3、修改gl_docfree.ktr 需视用户库中辅助核算项表(gl_docfree)数据更改 4、创建数据仓数据库表(建表脚本.txt) 5...

    pdi-datavault-plugin

    这些是使用Pentaho数据集成工具(PDI,又名Kettle)提供的插件扩展功能开发的。 通过这些自定义步骤,您可以: 轻松快捷地加载集线器,链接和卫星 在同一转换中定义所需的步骤 加载符合逻辑Data Vault规则的强制...

Global site tag (gtag.js) - Google Analytics