Kafka Streams - 如何更好地控制内部创建的状态存储主题的分区?

时间:2018-04-24 14:57:11

标签: apache-kafka partitioning apache-kafka-streams

Kafka Streams的国家商店是在内部创建的。 状态存储按键分区,但不允许按键提供除之外的分区<(据我所知)。

问题

如何控制状态存储内部创建主题的分区数?状态存储主题如何推断默认使用的分区数和分区,以及如何覆盖?

如果您想通过传入键值记录的键之外的其他东西对州级商店进行分区并进行共同分区,如何解决这个问题?在这种情况下,我想通过比常规键更具体的东西进行分区。例如。我有一个

button:hover

我希望按

进行分区
case class RegularKey(fieldA: String)

对于我的传入源主题,我在分区数量上使用HashPartitioner。

1 个答案:

答案 0 :(得分:1)

更改日志主题分区的数量取决于输入主题分区的数量,您无法更改它,因为状态是基于此数字共享的(即,分片有一个分区)。

如果要按某些属性对changelog主题进行分区,则必须将其设置为键。在您的情况下,您必须将SpecificKey设置为消息密钥。不允许更改分区,因为它会“破坏”Kafka Streams导致错误的结果。