我有一个Kafka-streams变换器,其功能类似于windower:它将状态累积到transform()
中的状态存储中,然后在punctuate()
期间将其转发到输出主题中,状态存储主题分区键与输入主题相同。
在punctuate()
期间,我希望每个StreamThread只迭代自己的状态存储分区,以最大限度地减少从支持kafka主题中读取的数据量。但我能得到的唯一迭代器是
org.apache.kafka.streams.state.ReadOnlyKeyValueStore<K,V>.all()
遍历整个州商店。
有没有办法“分配状态存储的分区”并使punctuate()
仅在指定的分区上进行迭代?
答案 0 :(得分:1)
我想,ReadOnlyKeyValueStore<K,V>.all()
可以满足您的需求。请注意,整个状态被分片为多个存储,每个分区有一个分片/存储。 all()
不会遍历&#34;其他分片&#34;。 &#34;所有&#34;表示&#34;本地的一切&#34;,即来自单个分区的碎片的所有内容。