kettle从入门到精通 第四十九课 ETL之kettle 自定义插件01
1、kettle插件是什么
kettle本身有足够多的转换或者job步骤,但是依然不能覆盖所有的业务场景,所以Kettle 自定义插件在有些独特的业务场景可以大显身手。
Kettle的插件架构使得我们可以不用修改Kettle本身代码,通过一些独立的代码就可以扩展Kettle的功能。这些独立的代码称为插件。Kettle可动态加载并运行这些插件。
2、kettle插件类型
- 转换步骤插件:在Kettle转换中使用的步骤,用来处理数据行。
- 作业项插件:在Kettle作业中使用的作业项,用来实现某个任务。
- 分区方法插件:利用输入字段的值指定自己的分区规则。
- 数据库类型插件:用来扩展不同的数据库类型。
3、kettle插件架构
Kettle内部的对象与外部插件没有任何区别,因为他们使用的API都一样的,只是运行时的加载方式不同。在这一点是我觉得是值得推崇的地方,里里外外,遵循统一的原则。从Kettle 4开始,Kettle内部有一个插件注册系统,负责加载各种内部和外部的插件。
插件有以下两个标识属性:
- 插件类型:由PluginTypeInterface接口定义,例如StepPluginType、 JobEntryPluginType、PartionerPluginType与RepositoryPluginType。
- 插件ID: 这是一个字符串,用来唯一标识一个插件。在大多数情况下,插件只使用一个单一的字符串,如TableInput是“表输入”步骤的ID, MYSQL是MySQL数据库类型的ID。使用相同的ID可以达到将旧的插件用新的插件替代的目的。
当Kettle环境初始化以后,插件注册系统首先会加载所有的内部对象,Kettle读取下面的配置文件来加载内部对象,这些配置文件位于Kettle的.jar文件中。
-
Kettle-steps.xml: 内部转换步骤。
-
Kettle-job-entries.xml:内部作业项。
-
Kettle-partition-plugins.xml:内部分区类型。
-
Kettle-database-types.xml:内部数据库类型。
-
Kettle-repositories.xml:内部资源库类型。
插件注册系统加载了所有的内部对象后,开始搜索可用的外部插件。通过浏览Plugins目录下各个子目录下的.jar文件来完成。它搜索特定的Kettle annotations来判断一个类是否是插件。
因为在内部对象加载后才加载插件,所以插件会替代相同ID的已加载的内部对象。例如,创建了插件,插件的ID是TableInput,就可以替换Kettle标准的“表输入”步骤。这个功能可以用插件替换Kettle内置的步骤。可以通过子类继承的方式,直接扩展已有步骤的某些功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构