也可参见本人百度文库: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,在2006年kettle加入了开源的BI组织Pantaho,正式命名为PDI(Pantaho Data Integeration),而kettle是“Kettle E.T.T.L.Envirnoment”的缩写。
kettle是一款国外开源的ETL(Extract Transform Load)工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,被设计用来抽取、转换、装入和加载数据,可以形象的理解为将各种数据放入到一个壶里面然后以一种指定的格式流出来。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
1.2 Kettle组件
- Spoon:一个图形用户界面,用来运行transformation(转换)和job(任务),其中transformation是用Pan工具来运行,任务是用Kitchen来运行。
- Pan:一个数据转换引擎,主要用来执行数据源读取,操作和写入数据等等功能。
- 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
重写UrlContentValidatePluginMeta中getStepData()
2.2.2.1.3 入口调用UrlContentValidatePlugin
重写UrlContentValidatePluginMeta中getStep(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,重写UrlContentValidatePluginMeta中getXML()
<!--[if !supportLists]-->2. <!--[endif]-->XML中解析基础数据,重写UrlContentValidatePluginMeta中loadXML(Node stepnode, List<DatabaseMeta> databases,Map<String, Counter> counters)
<!--[if !supportLists]-->3. <!--[endif]-->基础数据存储为XML数据截取图片如下
2.2.2.3.2 Kettle转换步骤插件基础数据资源库格式保存和解析
<!--[if !supportLists]-->1. <!--[endif]-->基础数据保存到资源库,重写UrlContentValidatePluginMeta中saveRep(Repository rep, ObjectId id_transformation,ObjectId id_step)
<!--[if !supportLists]-->2. <!--[endif]-->资源库中解析基础数据,重写UrlContentValidatePluginMeta中readRep(Repository rep, ObjectId id_step,List<DatabaseMeta> databases, Map<String, Counter> counters)
<!--[if !supportLists]-->3. <!--[endif]-->基础数据保存到资源库截取图片如下
2.2.2.4Kettle转换步骤插件供给下转换步骤的元数据
1.重写UrlContentValidatePluginMeta中getFields(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并测试
相关推荐
2 Kettle转换步骤插件开发 2.1 Kettle转换步骤插件开发概述 2.1.1 Kettle转换步骤插件至少需要实现四个接口 2.1.2 Kettle转换步骤插件各个类命名推荐规则 2.2 Kettle转换步骤插件开发例子 2.2.1 Kettle转换步骤...
#### 三、Kettle转换步骤插件开发 ##### 3.1 转换步骤插件开发概述 开发Kettle转换步骤插件需要实现四个关键接口: 1. **`org.pentaho.di.trans.step.StepMetaInterface`**:负责处理元数据,如加载XML、验证数据...
标题 "kettle rabbitmq 插件开发" 涉及的是如何在 Pentaho Kettle(也称为 Spoon)中创建和使用 RabbitMQ 插件。Kettle 是一个开源的数据集成工具,它允许用户进行数据抽取、转换和加载(ETL)操作。RabbitMQ 是一个...
1. **Step Plugins**:步骤插件是Kettle数据流中的基本单元,用于执行特定的数据处理任务,例如数据清洗、转换或计算。开发者可以通过实现`StepInterface`接口来创建自定义步骤。示例中可能包含了如何创建输入、输出...
2.1 Kettle转换步骤插件开发概述 - 实现四个核心接口:这些接口包括StepInterface、StepMetaInterface、StepDataInterface和StepIOMetaInterface,它们分别对应于插件的运行逻辑、元数据、数据管理和输入/输出定义。...
Kettle插件大致分为两类:Step Plugins(转换步骤插件)和Job Entry Plugins(作业条目插件)。Step Plugins主要用于数据转换过程中的特定操作,如数据清洗、转换等;而Job Entry Plugins则用于作业流程中的任务,...
3. **数据抽取和转换**:在获取到SAP数据后,Kettle提供了丰富的数据转换步骤,如过滤、排序、合并、拆分等,对数据进行预处理,以满足后续分析或存储的需求。 4. **数据加载**:处理完后的数据可以被加载到各种...
- **开发新插件**:如果现有插件无法满足需求,可以自行开发新的插件来扩展 Kettle 的功能。开发新的插件一般需要熟悉 Kettle 的插件架构和 API。 - **调试现有插件**:在使用现有插件时遇到问题时,可以通过源码...
Kettle支持插件开发,通过编写Java代码扩展其功能。要创建一个连接Clickhouse的插件,你需要遵循以下步骤: - 创建一个新的Java项目,并添加Kettle的API库以及clickhouse JDBC驱动到项目的类路径。 - 编写一个...
1. **创建数据转换**:在Kettle中,数据转换由一系列步骤(Steps)组成,每个步骤都有特定的功能,如读取数据、清洗数据或加载数据。首先,你需要打开Kettle Spoon界面,创建一个新的转换,并添加所需的步骤。例如,...
在Kettle中,这些插件可能包括HDFS输入和输出步骤,用于读取和写入Hadoop HDFS文件系统中的数据;可能还有对Hive、HBase等大数据存储系统的支持,以便于用户在Kettle工作流中集成大数据操作。 使用这些插件的具体...
使用这个插件,开发人员和数据工程师可以轻松地将Kettle工作流与Kafka集成,实现大数据实时处理、数据集成、ETL(提取、转换、加载)等多种应用场景。例如,他们可以从关系型数据库抽取数据,经过清洗和转换,然后...
3. **数据转换**:接收到的数据会被传递到Pentaho的转换步骤中,用户可以在此进行各种数据清洗、转换、过滤等操作。 4. **数据加载**:经过转换后的数据可以被写入到各种数据存储系统中,如数据库、文件系统、甚至...
文件名 "kettle-plugins" 可能是一个包含Kettle插件源代码或者相关示例的压缩包,它可能是博主为了配合博客内容提供的参考资料,帮助读者实践插件开发过程。解压后,开发者可以研究其中的代码结构,以此为模板创建...
4. **插件开发流程** - 定义接口实现类,并完成接口中所需的方法。 - 创建UI对话框,让用户配置插件参数。 - 编写逻辑代码,处理数据转换。 - 打包插件为JAR文件,放入Kettle的`plugins/steps`目录下。 - 在...
- **Transformation**:数据转换是Kettle的核心,它包含一系列的步骤(Steps),每个步骤负责特定的数据处理任务,如读取数据、转换数据、写入数据等。 - **Step**:数据处理的最小单位,每个Step都有特定的功能,...
Java程序生成Kettle转换(KTR)文件是一个技术性较强的话题,主要涉及到Java编程语言、Kettle(也称为Pentaho Data Integration,PDI)工具以及可能的资源文件管理。Kettle是一种开源的数据集成工具,它允许用户通过...