以下两种获取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