如果运行kafka连接接收器,则指定 .properties
输入文件,指定 partitioner.class
例如 FieldPartitioner
它可以基于中指定的记录字段进行分区 partition.field.name
.
那么,如果我想要两层分区呢?例如,我想在顶层按日期时间分区,然后按记录字段进行子分区?或者简单地用两个字段划分?在spark中,这种情况其实很常见。
基于属性配置文件格式的结构,我认为这是不允许的。这个假设正确吗?
如果运行kafka连接接收器,则指定 .properties
输入文件,指定 partitioner.class
例如 FieldPartitioner
它可以基于中指定的记录字段进行分区 partition.field.name
.
那么,如果我想要两层分区呢?例如,我想在顶层按日期时间分区,然后按记录字段进行子分区?或者简单地用两个字段划分?在spark中,这种情况其实很常见。
基于属性配置文件格式的结构,我认为这是不允许的。这个假设正确吗?
1条答案
按热度按时间hwamh0ep1#
听起来您必须编写自己的分区类来实现
Partitioner
接口。它可以选择使用两类分区器中的一个作为基类(可能是TimeBasedPartitioner
或者FieldPartitioner
),无论哪一个携带了最多的功能,都可以实现您想要实现的目标。目前还没有一种方法仅通过配置来实现这种类型的分区。但听起来很有用。另外,我不确定您指的是哪种类型的接收器,但如果是与存储相关的,则可能需要使用kafka connect storage common repo中包含的与分区相关的代码