Kafka 主题分区中的键和值 avro 消息分布
Key and value avro messages distribution in Kafka topic partitions
我们使用 kafka topic 有 6 个分区,来自生产者的传入消息有 4 个键 key1,key2,key3,key4 及其对应的值,我看到这些值只分布在 3 个分区中,其余分区保持为空.
- 消息的分发是否基于密钥的哈希值?
- 假设我的Key1的hash值为XXXX,那么在总共6个分区中,它会进入哪个分区?
- 我正在使用 kafka connect HDFS 连接器将数据写入 HDFS,我知道它使用密钥的哈希值将消息分发到分区,它是否与 kafka 用于分发消息的方式相同消息?
是的,消息在分区上的分布是由消息键的散列值取模该主题的总分区计数决定的。例如。如果您要发送消息 m,密钥为 k,主题 mytopic 具有 p分区,然后m进入分区k.hashCode() %p 在 mytopic 中。我认为这也回答了你的第二个问题。在你的情况下,两个结果值被映射到同一个分区。
如果我没记错的话,Kafka-hdfs 连接器应该负责使用 Kafka 主题并将其放入 Hadoop HDFS。那里的分区你不用管,它是抽象出来的。
我们使用 kafka topic 有 6 个分区,来自生产者的传入消息有 4 个键 key1,key2,key3,key4 及其对应的值,我看到这些值只分布在 3 个分区中,其余分区保持为空.
- 消息的分发是否基于密钥的哈希值?
- 假设我的Key1的hash值为XXXX,那么在总共6个分区中,它会进入哪个分区?
- 我正在使用 kafka connect HDFS 连接器将数据写入 HDFS,我知道它使用密钥的哈希值将消息分发到分区,它是否与 kafka 用于分发消息的方式相同消息?
是的,消息在分区上的分布是由消息键的散列值取模该主题的总分区计数决定的。例如。如果您要发送消息 m,密钥为 k,主题 mytopic 具有 p分区,然后m进入分区k.hashCode() %p 在 mytopic 中。我认为这也回答了你的第二个问题。在你的情况下,两个结果值被映射到同一个分区。
如果我没记错的话,Kafka-hdfs 连接器应该负责使用 Kafka 主题并将其放入 Hadoop HDFS。那里的分区你不用管,它是抽象出来的。