为了账号安全,请及时绑定邮箱和手机立即绑定

Kettle插件架构及扩展

标签:
大数据

一.插件架构

       Kettle采用的是一种插件的架构,开发者可以不用修改Kettle自己的代码,通过引入独立开发的代码即可扩展Kettle的功能。这样独立的代码我们可以成其为插件。Kettle可以动态的加载并运行这些插件。


webp

image.png

以下是Kettle现有插件类型:

  • 转换步骤插件

  • 作业项插件

  • 分区方法插件

  • 数据库类型插件

  • 资源库类型插件

  • 视图插件

  • 大数据插件

       Kettle内部对象与外部插件在功能上没有任何区别,因为它们使用的是同样的API,只是在运行时加载方式不同。

       Kettle内部有一个插件注册系统,负责加载各种内部和外部插件,在Kettle环境初始化后,该系统通过读取以下配置文件来加载内部对象:

  • kettle-steps.xml:内部转换步骤

  • kettle-job-entries.xml:内部作业项

  • kettle-partition-plugins.xml:内部分区类型

  • kettle-database-types.xml:内部数据库类型

  • kettle-repositories.xml:内部资源库类型

       在加载完成所有的内部对象后,就要搜索可用外部插件。这一步通过浏览代码中的plugins/目录的各个子目录下的.jar文件来完成,如下图:


webp

image.png


插件有两个表示属性:

  • 插件类型:类型由PluginTypeInterface接口定义。其实现类有StepPluginType、JobEntryPluginType等。

  • 插件ID:一个字符串数组,用来唯一标识一个插件。
    上文提到Kettle现有插件类型,下面一一介绍:

二.转换步骤插件

源码所在位置org.pentaho.di.trans.steps包下。
转换步骤插件包括四个Java类,分别实现四个接口:

  • StepMetaInterface:提供步骤元数据并处理并行化。

  • StepInterface:根据元数据实现具体功能。

  • StepDataInterface:用来存储步骤临时数据等。

  • StepDialogInterface:Spoon里的图形界面,用来编辑步骤元数据。

1.StepMetaInterface
       此接口负责步骤里所有和元数据相关的任务。

2.StepDataInterface
       实现此接口的类用来维护步骤的执行状态,以及存储临时对象。可以把输出行的元数据、数据库连接、输入输出流等存储到这个对象里。

3.StepDialogInterface
       实现此接口的类用来提供一个用户界面,用户通过这个界面输入元数据。

4.StepInterface
       实现此接口的类读取上个步骤传来的数据行,利用StepMetaInterface对象里定义的元数据,逐行转换和处理上个步骤传来的数据行。通常开发者需要重载以下几个方法:

  • init():步骤初始化方法,如果没有任何初始化工作,则不用重载这个方法。

  • dispose():释放资源的方法,例如关闭数据库连接等。

  • processRow():实际处理数据的地方,只要该方法返回true,转换引擎就会重复调用此方法。

三.作业项插件

作业项插件只需要实现两个接口:

  • JobEntryInterface:管理作业项元数据及执行作业项。

  • JobEntryDialogInterface:作业项的对话框类,接收用户输入元数据。

Kettle中的步骤是并行执行的,作业是串行执行的,是根据所定义的先后顺序来执行的。

1.JobEntryInterface
最重要的方法是:

  • execute():执行作业项并返回结果对象。

四.分区插件

分区方法决定了一行数据属于哪个分区,通过分区插件可以根据业务开发新的分区规则。

要实现分区插件,需实现两个接口:

  • Partitioner

  • StepDialogInterface

1.Partitioner

       此接口中有一个重要方法需要实现:getPartition()。



作者:阿猫阿狗Hakuna
链接:https://www.jianshu.com/p/09cb0bf81275


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消