【问题标题】:Kafka Connect Sink Partitioning: Sub-Partitioning?Kafka Connect Sink 分区:子分区?
【发布时间】:2017-09-13 06:13:30
【问题描述】:

如果我运行 Kafka Connect Sink,我指定一个.properties 输入文件,该文件指定一个partitioner.class,例如FieldPartitioner,它可以根据partition.field.name 中指定的记录字段进行分区。

那么,如果我想要两级分区怎么办?例如,我想在顶层按日期时间分区,然后按记录字段进行子分区?还是简单地按两个字段划分?在 Spark 中,这实际上很常见。

基于属性配置文件格式的结构,我认为这是不允许的。这个假设正确吗?

【问题讨论】:

  • 运气好吗?
  • 是的,我编写了自己的分区器类并在生产中使用了一个小插件。 Confluent 平台最近添加了一个支持多个字段的分区器类和一个提供完整日期时间支持的单独的分区器类,但如果你想要两者都做,你仍然需要一个自定义插件。这似乎是一个非常常见的情况,所以我很惊讶 Confluent 没有更好地解决这个问题。不过我习惯使用自定义插件。

标签: apache-kafka apache-kafka-connect


【解决方案1】:

听起来您必须编写自己的分区类来实现Partitioner 接口。它可以选择使用两种分区器中的一种作为基类(可能是TimeBasedPartitionerFieldPartitioner),无论哪一种都具有您想要实现的最多功能。

目前没有办法仅通过配置来实现这种类型的分区。但这听起来很有用。另外,我不确定您指的是哪种类型的接收器,但如果它与存储相关,您可能需要使用kafka-connect-storage-common repo 中包含的分区器相关代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2019-09-21
    • 2020-12-11
    • 1970-01-01
    • 2021-03-16
    • 2017-04-01
    • 2020-06-02
    • 2021-02-02
    相关资源
    最近更新 更多