如何使用Kakfa流删除重复的输入消息

时间:2018-07-07 14:15:37

标签: apache-kafka apache-kafka-streams

我有一个话题,从各种设备中突发事件。每s秒就有n台设备发布天气报告。

问题是这些设备每s秒发出5-10条相同值的记录。因此,如果您在kafka主题中看到单个设备的输出,则如下所示:-

对于设备1:- t1,t1,t1,t1(在同一时刻,然后间隔s秒)t2,t2,t2,t2(然后是s秒间隔),t3,t3,t3,t3

但是,我想删除kafka中由于事件突发而出现的这些重复记录。 我想消费如下: t1,t2,t3,...

我试图使用Kafka流API提供的windowing和ktable概念,但似乎不可能。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可能想使用kafka的Log压缩。但是,为了使用它,U对于所有重复消息应具有相同的密钥,对于非重复消息应具有不同的密钥。看看这个。 https://kafka.apache.org/documentation/#compaction

答案 1 :(得分:0)

可以选择使用t作为键将主题读入KTable。重复的值将被视为upsert,而不是将其有效删除的insert。然后将KTable写入另一个主题