Kafka流中的状态存储是在内部创建的。状态存储是按键分区的,但不允许提供除按键以外的分区(据我所知)。
问题
如何控制内部创建的状态存储的分区数?状态存储主题如何推断默认情况下要使用的分区数和分区数,以及如何重写?
如果您想用传入键值记录的键以外的其他东西来划分状态存储并进行共分区,那么如何解决这个问题?在这种情况下,我想用比常规键更具体的东西来划分。e、 我有一个
case class RegularKey(fieldA: String)
我想用
case class SpecificKey(fieldA: String, fieldB: String)
对于传入的源主题,我使用了一个分区数的hashpartitioner。
1条答案
按热度按时间wbgh16ku1#
changelog主题分区的数量取决于输入主题分区的数量,您不能更改它,因为状态是基于此数量共享的(即,shard有一个分区)。
如果要按某个属性对changelog主题进行分区,则必须将其设置为键。在你的情况下,你必须
SpecificKey
作为消息键。不允许更改分区,因为它会“破坏”kafka流,从而导致不正确的结果。