KStream.toTable() 获得的 KTable 和直接从 Topic 实现的 KTable 有什么区别?



以下两种获取KTable的方法之间有什么区别吗?

选项1:

var kstream = streamsBuilder.stream(topicName, Consumed.with(...));
var mappedKTable = kstream.toTable(...);

选项2:

var nativeKTable = streamsBuilder.toTable(topicName, Consumed.with(...));

当你阅读一个主题时,你会把它作为一个流来阅读。如果您需要它作为一个表,因为您只需要每个键的最新值,则可以使用.toTable()。这相当于阅读一张表格。

如果您读取一个流,那么您可能会预生成一个聚合,该聚合本质上会转换为KTable。

假设您有一个包含以下内容的主题

K1: 1
K1: 2
K2: 1

作为KTable阅读这篇文章会给你:

K1: 2
K2: 1

如果您将作为KStream进行读取并预先形成总和聚合,则会产生以下Ktable

K1:3
K2:1

最新更新