对墓碑值执行分组依据

0 apache-kafka apache-kafka-streams ksqldb

对包含逻辑删除值的 ktable 执行 groupby 时会发生什么?似乎groupby没有被评估,但是tombstone会像filter方法一样被转发吗?

Mat*_*Sax 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>.

  • 这个答案非常有帮助。如果它对其他人有帮助,我花了一段时间才重现此行为,因为我在记录值中指定了一个属性作为时间戳。执行此操作时,我必须生成一条记录,其中包含值中的键和时间戳,但将组中使用的属性保留为空。下面是在逻辑删除中创建所需时间戳的示例表。创建表示例(ky String PRIMARY KEY,eventTimestamp Timestamp)WITH(kafka_topic ='example',value_format ='json',timestamp='eventTimestamp'); (2认同)