当前位置: 首页 > 知识库问答 >
问题:

如何删除记录从Kafka全球状态存储?

燕英逸
2023-03-14

对于删除记录,我执行如下操作

kvStore.put("key-1",null)

Kafka如何知道记录被删除,在恢复过程中,它将从源主题转储记录(考虑源主题有一条键为-1的记录)

在我的拓扑中

    null
    null
this.context.forward(key, null)
key: 123 value:null

在状态存储中更新相同内容

我只想知道,在恢复过程中,该记录将被删除,这意味着如果使用键123进行get on store时,我将得到null。

共有1个答案

归鹤龄
2023-03-14

状态存储changelogs是压缩的主题。要从压缩主题中删除消息,需要执行put(key,null)操作。具有null值的消息称为墓碑,它最终将被主题清理器删除。

请注意,消息只会在状态存储中(最终)被删除,而不会在输入主题中被删除。

最后,键123的记录应该从状态存储区中完全删除。

 类似资料:
  • 我正在寻找一种从Kafka主题中删除(完全删除)已消费记录的方法。我知道有几种方法可以做到这一点,例如更改主题的保留时间或删除Kafka logs文件夹。但我要寻找的是一种使用Java API删除某个主题的一定数量记录的方法,如果可能的话。 我试过测试AdminClient API,特别是AdminClient。deleteRecords(recordsToDelete)方法。但如果我没弄错的话,

  • 有没有办法从Kafka主题中删除单个记录?我知道有一个脚本kafka-delete-records.sh删除指定主题和分区上指定偏移量之前的记录,但是我希望能够删除我指定的偏移量上的记录。有办法做到吗? 这不是在Java而是在裸露的Kafka实例上。

  • 我们有一个Kafka流聚合拓扑。我们需要控制changeLog主题的大小,以减少Kafka存储成本。因此,我们在拓扑中使用transformer(DSL API)调度标点符号,该标点符号使用KeyValueStore.delete()从stateStore中删除旧记录。 我能够验证在删除之后,在进一步调度的标点符号触发器中,删除的键不在状态存储中。但是它是否也会从changeLog主题中删除该记录

  • 我正在创建一个脚本,用于将一个参数传入MySQL查询,然后执行该MySQL查询以从多个表中删除多条记录。 现在我遇到了一个问题,我需要为每个单独的表创建多个文件。是否有一种方法可以在一个文件中执行每个MySQL查询,而不是为每个查询创建多个文件? 以下是我创建的代码:

  • 在我的Spigot/Bukkit Minecraft服务器插件中,我试图删除一个世界的数据目录,但在卸载世界及其区块后,一些文件和目录仍然无法删除。 这是我代码的重要部分: 服务器管理器。deleteDirectory(文件)利用Apache的FileUtils。deletequiely(File)并可用于其他功能,但无法删除最近卸载的世界的数据目录中的某些文件,很可能是因为服务器仍在使用某些文件

  • 我有几个Kafka的题目作为测试。现在我想通过清理我的Kafka主题列表来把它们全部除掉。我设置了变量,然后停止并重新启动zookeeper和kafka服务器。但什么也帮不了我。主题仍然存在,“标记为删除”。我读了这个问题,但没有找到任何答案。否则,这里建议手动移除任何主题。但我该怎么做呢?在故事的结尾,手动或通过命令行,我如何永久删除Kafka主题?