如何在 Kafka Connect Sink 中指定 Kafka 主题的分区

Posted

技术标签:

【中文标题】如何在 Kafka Connect Sink 中指定 Kafka 主题的分区【英文标题】:How to specify the Kafka topic's partition in Kafka Connect Sink 【发布时间】:2021-10-27 13:00:56 【问题描述】:

我正在尝试为我的 Kafka Connect Sink 指定一个主题分区。特别是,我使用的是DataStax Apache Kafka Connector。

有大量与为 Kafka Consumer 指定主题分区相关的文档和资源,例如:

https://kafka-tutorials.confluent.io/kafka-console-consumer-read-specific-offsets-partitions/kafka.html consumer.How to specify partition to read? [kafka]

但是,我根本找不到任何关于如何指定给定 Kafka Connect Sink 连接器从哪个分区读取的信息。

似乎Confluent connector developer docs 暗示应该可以指定分区,但我看不到任何可以在通用Kafka Sink Configuration Properties docs 和DSE Kafka Connector configuration docs 中设置的配置。

我的理解是,Kafka Connect Sink 基本上是写入给定数据存储的 Kafka Consumer 的特定实现。如果是这样,应该可以指定一个分区,对吗?还是我误解了 Kafka 连接器的工作原理?

【问题讨论】:

为什么只需要获取特定分区? @AlexOtt 我们正在考虑使用一个主题拓扑,我们从一个主题中消费,丰富数据,然后写回同一个主题但不同的分区。然后,Kafka Connect 将仅使用这些特定分区上的丰富数据。我认为这个想法是可以将这个主题作为一个单元进行扩展和管理。不过,我们可能可以通过使用两个单独的主题来解决这个问题 这不是非常可扩展的解决方案,而且很容易破坏某些东西。两个主题更好 【参考方案1】:

您不能在 Connect API 中指定分区。它订阅所有分区,然后作为消费者组的一部分在工作任务中分配消费者实例。

【讨论】:

以上是关于如何在 Kafka Connect Sink 中指定 Kafka 主题的分区的主要内容,如果未能解决你的问题,请参考以下文章

Kafka Connect:如何使用 hdfs sink 连接器将 Kafka 主题的 protobuf 数据发送到 HDFS?

如何使用debezium更改数据捕获在mysql中捕获数据并在kafka connect中使用jdbc sink?

Kafka Connect JDBC Sink 连接器:如何删除没有 NULL 值的记录?

使用JsonConverter的Kafka Connect HDFS Sink for JSON格式

Kafka Connect - 如何删除连接器

Kafka-Connect:启动 S3 Sink 连接器时出现无法识别的错误