【发布时间】:2022-01-11 04:56:58
【问题描述】:
我有一个简单的问题,我们是否可以使用 KSQL 检测和删除关于 kafka 主题的流数据中的重复项。
【问题讨论】:
标签: apache-kafka apache-kafka-streams ksqldb
我有一个简单的问题,我们是否可以使用 KSQL 检测和删除关于 kafka 主题的流数据中的重复项。
【问题讨论】:
标签: apache-kafka apache-kafka-streams ksqldb
默认情况下,表会根据键进行重复数据删除。相同键的新记录将覆盖旧事件。如果您需要在新事件出现时“检测”和“处理”旧数据,那么 KSQL 无法做到这一点。
如果您需要不同的值而不是按键,您可以针对某些事件流创建一个表并在HAVING COUNT(field) = 1over a time window 上进行过滤,这是您可以做的最好的事情。参考 - https://kafka-tutorials.confluent.io/finding-distinct-events/ksql.html
如果您需要不确定的时间窗口来确保只处理某个字段一次,那么您将需要使用外部数据库和可选的内部缓存来执行查找。这需要通过普通消费者或 Kafka Streams 来完成。
【讨论】: