![](/img/trans.png)
[英]Querying a Global State Store in Kafka Streams throws a Null exception
[英]Null value in Kafka Streams KV state store
我正在尝试为 Kafka Streams 开发交互式查询应用程序。 它是一个简单的基于 count() 的状态存储。 但我看到的问题是,一旦我将应用程序扩展到多个实例,我就会开始为某些键获取空值
KStream<String, String> inputStream = builder.stream(INPUT_TOPIC, Consumed.with(Serdes.String(), Serdes.String())); //key: foo, value:bar
inputStream.groupByKey(Grouped.with(Serdes.String(), Serdes.String()))
.count(Materialized.<String, Long, KeyValueStore<Bytes, byte[]>>as(STATE_STORE_NAME)
.withKeySerde(Serdes.String())
.withValueSerde(Serdes.Long()));
就基于测试 DSL 的管道而言,差不多就是这样。 我有一个用于交互式查询的 REST 端点
KafkaStreams streams = ...;
ReadOnlyKeyValueStore<String, Long> averageStore = streams.store(storeName, QueryableStoreTypes.<String, Long>keyValueStore());
Long count = averageStore.get(word);
count
为空 - 此行为仅适用于某些键。 这与本地是否存在密钥无关
当您扩展 Kafka Streams 应用程序时,只有全局表在所有实例上可见。 对于常规 KTable,只有整个数据集的一部分可用。
您需要查找关键元数据并将 REST 调用重定向到此处所述的相应实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.