Kafka Connect Sink 分区:子分区?
Kafka Connect Sink Partitioning: Sub-Partitioning?
如果我 运行 一个 Kafka Connect Sink,我指定一个 .properties
输入文件,指定一个 partitioner.class
例如 FieldPartitioner
可以根据记录进行分区partition.field.name
.
中指定的字段
那么,如果我想要两级分区怎么办?例如,我想在顶层按日期时间进行分区,然后按记录字段进行子分区?或者简单地按两个字段划分?在Spark中,这其实很常见。
根据属性配置文件格式的结构,我推测这是不允许的。这个推定是否正确?
听起来您必须编写自己的分区 class 来实现 Partitioner
接口。它可以选择使用两类分区程序之一作为基础 class(可能是 TimeBasedPartitioner
或 FieldPartitioner
),以实现您想要实现的功能最多为准。
目前还没有办法仅通过配置来实现这种类型的分区。不过听起来很有用。另外,我不确定你指的是哪种类型的接收器,但如果它与存储相关,你可能想使用包含在 kafka-connect-storage-common repo
中的分区器相关代码
如果我 运行 一个 Kafka Connect Sink,我指定一个 .properties
输入文件,指定一个 partitioner.class
例如 FieldPartitioner
可以根据记录进行分区partition.field.name
.
那么,如果我想要两级分区怎么办?例如,我想在顶层按日期时间进行分区,然后按记录字段进行子分区?或者简单地按两个字段划分?在Spark中,这其实很常见。
根据属性配置文件格式的结构,我推测这是不允许的。这个推定是否正确?
听起来您必须编写自己的分区 class 来实现 Partitioner
接口。它可以选择使用两类分区程序之一作为基础 class(可能是 TimeBasedPartitioner
或 FieldPartitioner
),以实现您想要实现的功能最多为准。
目前还没有办法仅通过配置来实现这种类型的分区。不过听起来很有用。另外,我不确定你指的是哪种类型的接收器,但如果它与存储相关,你可能想使用包含在 kafka-connect-storage-common repo
中的分区器相关代码