Python如何删除Kafka主题下的所有消息

luc*_*umi 4 python python-2.7 apache-kafka kafka-python

我是卡夫卡新手。我们正在尝试将数据从 csv 文件导入到 Kafka。我们需要每天导入,同时前一天的数据已被废弃。如何在Python中删除Kafka主题下的所有消息?或者如何删除 python 中的 Kafka 主题?或者我看到有人建议等待数据过期,如果可以的话我该如何设置数据过期时间?任何建议将不胜感激!

谢谢

Luk*_*ant 5

您无法删除 Kafka 主题中的消息。你可以:

  • 设置log.retention.*属性,这基本上是消息的过期时间。您可以选择基于时间的过期时间(例如,保留六小时前或更新的消息)或基于空间的过期时间(例如,保留最多 1 GB 的消息)。请参阅代理配置并搜索保留。您可以为不同的主题设置不同的值。
  • 删除整个主题。这是一种棘手的方式,我不推荐这种方式。
  • 每天创建一个新主题。类似于my-topic-2015-09-21

但我认为您根本不需要删除主题中的消息。因为您的 Kafka 消费者会跟踪已经处理过的消息。因此,当您阅读今天的所有消息时,Kafka 消费者会保存这些信息,而您明天将只阅读新消息。

另一种可能的解决方案是日志压缩。但它更复杂,并且可能不是您所需要的。基本上,您可以为 Kafka 主题中的每条消息设置一个键。如果您使用相同的密钥发送两条不同的消息,Kafka 将仅保留主题中的最新消息,并删除所有具有相同密钥的旧消息。您可以将其视为一种“键值存储”。每条具有相同密钥的消息仅更新特定密钥下的值。但是,嘿,你真的不需要这个,这只是仅供参考:-)。