对墓碑值执行分组

问题描述 投票:0回答:2

对包含墓碑值的 ktable 执行 groupby 时会发生什么? 好像groupby没有被评估,但是tombstone会像filter方法一样被转发吗?

apache-kafka apache-kafka-streams ksqldb
2个回答
5
投票

KTable 不能“包含”逻辑删除,因为它会被解释为相应键的删除。

但是,如果您有

KTable#groupBy()
并且上游中删除了某些内容
KTable
,则 groupBy/aggregate 会更新,以便从聚合结果中删除旧值。

示例:上游

KTable
有 3 个条目:
<k1,a>, <k2,b>, <k3, a>
,您可以按值分组并进行计数。结果
KTable
将包含:
<a, 2>, <b, 1>

如果您获得上游

<k1, null>
的墓碑
KTable
,结果
KTable
将更新为
<a, 1>, <b, 1>


0
投票

@Matthias 我在 KStream 中进行逻辑删除并将数据存储在 KTable 中后执行聚合。我发现墓碑不起作用。如果我只使用墓碑,那么它会按预期工作。任何想法。

代码片段如下:

.groupByKey().aggregate((),null, 聚合器,物化。as ("StatestoreName).withKeySerde(keySede).withValueSerde(valueSerde)

© www.soinside.com 2019 - 2024. All rights reserved.