官方只提供了取模分区器,如果有其他分区需求,可通过自定义分区插件扩展。
自定义分区器插件需要实现以下两个接口:
Partitioner:基类BasePartitioner
说明:维护配置、访问对话框、运行时分配数据到分区
StepDialogInterface:基类BaseStepDialog
说明:配置分区器的对话框
实现Partitioner接口
Partitioner是分区器插件的主实现接口(org.pentaho.di.trans.Partitioner)
自定义实现类需继承BasePartitioner 实现Partitioner 接口
以下方法用来追踪分区器配置,每个分区器用私有属性来存储配置,并提供相应的getter setter
- public Object clone() 构建相同分区的一个深拷贝
- public Partitioner getInstance() 获取分区器实例
以下方法跟自定义转换步骤类似,用于配置的序列化
- public String getXML()
- public void loadXML()
- public void saveRep()
- public void readRep()
在运行时,以下方法用于分布行流到不同分区去,总分区数由继承的nrPartitions属性获得,返回一个分区号(0 <= 分区号 < nrPartitions)
- public int getPartition()
每一个Patitioner自定义实现类必须使用PartitionerPlugin注解装饰,其属性如下:
- id 分区器全局唯一的id
- name 分区器名
- description 分区器描述
- i18nPackageName 国际化
实现StepDialogInterface接口
StepDialogInterface是分区器插件对话框的主实现接口(org.pentaho.di.trans.step.StepDialogInterface)
自定义实现类需继承BaseStepDialog 实现StepDialogInterface接口
当你在Spoon上打开分区器配置,系统随即实例化dialog类并传入StepPartitioningMeta 对象。通过调用 getPartitioner() 返回Partitioner对象,然后调用dialog的 open()弹出对话框。其规则与转换步骤类似。
部署
与转换步骤相同