我知道 kafka console producer
命令和它是相当方便的。我想知道,有没有一种方法可以确定,当我们也有密钥时,哪个密钥会转到哪个分区?假设我们在kafka主题中有10个分区,那么生产者将如何决定密钥将转到哪个分区?
我想它可能会有用 key.toString.hashCode() % (num_of_partitons)
,但我不认为这是Kafka游戏机生产者雇用的方式。
我们能检查一下数据将发送到哪个分区生产者吗?
我知道 kafka console producer
命令和它是相当方便的。我想知道,有没有一种方法可以确定,当我们也有密钥时,哪个密钥会转到哪个分区?假设我们在kafka主题中有10个分区,那么生产者将如何决定密钥将转到哪个分区?
我想它可能会有用 key.toString.hashCode() % (num_of_partitons)
,但我不认为这是Kafka游戏机生产者雇用的方式。
我们能检查一下数据将发送到哪个分区生产者吗?
1条答案
按热度按时间wvt8vs2t1#
如果使用默认partioner,则它不会对keys字符串值进行哈希编码,而是使用一个multirre2哈希算法,如org.apache.kafka.clients.producer.internals.defaultpartitioner代码所示:
算法的实现可以在这里找到。