Kafka主题分区中的键和值Avro消息分发

时间:2018-07-22 18:41:46

标签: apache-kafka kafka-consumer-api kafka-producer-api

我们使用具有6个分区的kafka主题,并且生产者的传入消息具有4个键key1,key2,key3,key4及其对应的值,我看到这些值仅分配给3个分区,其余的分区仍然为空。 / p>

  1. 消息的分发是否基于密钥的哈希值?
  2. 让我说Key1的哈希值是XXXX,它在总共6个分区中位于哪个分区?
  3. 我正在使用kafka connect HDFS连接器将数据写入HDFS,我知道它使用键的哈希值将其分发到分区的消息,这与kafka分发消息的方式相同吗?

1 个答案:

答案 0 :(得分:0)

  • 是的,按分区分配的消息是由该主题上的消息密钥对总分区数取模的哈希值确定的。例如。如果您要将密钥为 k 的消息 m 发送到具有 p 分区的主题 mytopic ,然后 m 进入 mytopic 中的分区 k .hashCode()% p 。我认为这也回答了您的第二个问题。在您的情况下,两个结果值将被映射到同一分区。

  • 如果我的内存正确地为我服务,则Kafka-hdfs连接器应注意使用Kafka主题,并将其放入Hadoop HDFS中。您无需担心那里的分区,它已被抽象出来。