Kafka 通过KStream.toTable()获得的KTable和直接从Topic实体化的KTable有什么区别?

i86rm4rw  于 2022-12-22  发布在  Apache
关注(0)|答案(1)|浏览(181)

以下两种获取KTable的方法有什么区别吗?
备选办法1:

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

备选方案二:

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

k5ifujac1#

当你从一个主题中读取时,你是以流的形式读取它的。如果你只想得到每个键的最新值,所以你需要它作为一个表,你可以使用.toTable()。这相当于阅读一个表。
如果您读取一个流,那么您可能会预先执行一个聚合,该聚合本身会转换为KTable。
假设您有一个包含以下内容的主题

K1: 1
K1: 2
K2: 1

将其作为KTable读取将为您提供:

K1: 2
K2: 1

如果您以KStream的形式读取并执行总和聚合,则会得到以下Ktable

K1:3
K2:1

相关问题