我是kafka的新手。我们正在尝试将数据从csv文件导入Kafka。我们需要每天导入,同时前一天的数据被删除。 如何在python中删除Kafka主题下的所有消息?或者如何在python中删除Kafka主题? 或者我看到有人建议等待数据过期,如果可能的话,如何设置数据到期时间? 任何建议将不胜感激!
由于
答案 0 :(得分:2)
您无法删除Kafka主题中的邮件。你可以:
log.retention.*
属性,这基本上是消息的到期时间。您可以选择基于时间的过期(例如,保留6小时或更新的消息)或基于空间的过期(例如,保留最多1 GB的消息)。请参阅Broker config并搜索保留。您可以为不同的主题设置不同的值。 但我认为你根本不需要删除主题中的消息。因为您的Kafka消费者会跟踪已处理的消息。因此,当您阅读所有今天的消息时,Kafka消费者会保存这些信息,您明天就会阅读新消息。
另一种可能的解决方案可能是Log compaction。但它更复杂,可能不是你需要的。基本上,您可以为Kafka主题中的每条消息设置密钥。如果您使用相同的密钥发送两个不同的消息,Kafka将仅保留主题中的最新消息,它将删除具有相同密钥的所有旧消息。您可以将其视为一种"键值存储"。具有相同密钥的每条消息只更新特定密钥下的值。但是,嘿,你真的不需要这个,它只是FYI :-)。
答案 1 :(得分:0)
最简单的方法是简单地删除主题。我在Python自动化测试套件中使用它,我想验证通过Kafka发送的一组特定测试消息,并且不希望看到先前测试运行的结果
def delete_kafka_topic(topic_name):
call(["/usr/bin/kafka-topics", "--zookeeper", "zookeeper-1:2181", "--delete", "--topic", topic_name])