我知道kafka console producer
命令,它非常方便。我想知道当我们也有密钥时,是否有办法确定哪个密钥将进入哪个分区?假设我们在 kafka 主题中有 10 个分区,生产者将如何决定 key 将去哪个分区?
我认为它可能会使用key.toString.hashCode() % (num_of_partitons)
,但我认为这不是 kafka 控制台制作人采用的方式。
我们可以检查将数据发送到哪个分区生产者吗?
我知道kafka console producer
命令,它非常方便。我想知道当我们也有密钥时,是否有办法确定哪个密钥将进入哪个分区?假设我们在 kafka 主题中有 10 个分区,生产者将如何决定 key 将去哪个分区?
我认为它可能会使用key.toString.hashCode() % (num_of_partitons)
,但我认为这不是 kafka 控制台制作人采用的方式。
我们可以检查将数据发送到哪个分区生产者吗?
如果使用默认分区器,它不会对键字符串值进行哈希编码,而是使用Murmur2哈希算法,如org.apache.kafka.clients.producer.internals.DefaultPartitioner代码中所示:
Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
该算法的实现可以在这里找到。