kettle从入门到精通 第四十九课 ETL之kettle 自定义插件01

1、kettle插件是什么

kettle本身有足够多的转换或者job步骤,但是依然不能覆盖所有的业务场景,所以Kettle 自定义插件在有些独特的业务场景可以大显身手。

Kettle的插件架构使得我们可以不用修改Kettle本身代码,通过一些独立的代码就可以扩展Kettle的功能。这些独立的代码称为插件。Kettle可动态加载并运行这些插件。

2、kettle插件类型

  1. 转换步骤插件:在Kettle转换中使用的步骤,用来处理数据行。
  2. 作业项插件:在Kettle作业中使用的作业项,用来实现某个任务。
  3. 分区方法插件:利用输入字段的值指定自己的分区规则。
  4. 数据库类型插件:用来扩展不同的数据库类型。

 

3、kettle插件架构

Kettle内部的对象与外部插件没有任何区别,因为他们使用的API都一样的,只是运行时的加载方式不同。在这一点是我觉得是值得推崇的地方,里里外外,遵循统一的原则。从Kettle 4开始,Kettle内部有一个插件注册系统,负责加载各种内部和外部的插件。

 

插件有以下两个标识属性
  1. 插件类型:由PluginTypeInterface接口定义,例如StepPluginType、 JobEntryPluginType、PartionerPluginType与RepositoryPluginType。
  2. 插件ID: 这是一个字符串,用来唯一标识一个插件。在大多数情况下,插件只使用一个单一的字符串,如TableInput是“表输入”步骤的ID, MYSQL是MySQL数据库类型的ID。使用相同的ID可以达到将旧的插件用新的插件替代的目的。

当Kettle环境初始化以后,插件注册系统首先会加载所有的内部对象,Kettle读取下面的配置文件来加载内部对象,这些配置文件位于Kettle的.jar文件中。

  1. Kettle-steps.xml: 内部转换步骤。

  2. Kettle-job-entries.xml:内部作业项。

  3. Kettle-partition-plugins.xml:内部分区类型。

  4. Kettle-database-types.xml:内部数据库类型。

  5. Kettle-repositories.xml:内部资源库类型。

插件注册系统加载了所有的内部对象后,开始搜索可用的外部插件。通过浏览Plugins目录下各个子目录下的.jar文件来完成。它搜索特定的Kettle annotations来判断一个类是否是插件。

 

因为在内部对象加载后才加载插件,所以插件会替代相同ID的已加载的内部对象。例如,创建了插件,插件的ID是TableInput,就可以替换Kettle标准的“表输入”步骤。这个功能可以用插件替换Kettle内置的步骤。可以通过子类继承的方式,直接扩展已有步骤的某些功能。
 

 

posted @ 2024-02-28 21:05  慕容尘轩  阅读(296)  评论(0编辑  收藏  举报