Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当初始偏移量在现有记录之前增加时,卡夫卡压缩主题中的日志数据会发生什么变化?_Java_Apache Kafka - Fatal编程技术网

Java 当初始偏移量在现有记录之前增加时,卡夫卡压缩主题中的日志数据会发生什么变化?

Java 当初始偏移量在现有记录之前增加时,卡夫卡压缩主题中的日志数据会发生什么变化?,java,apache-kafka,Java,Apache Kafka,我在任何地方都找不到记录,但卡夫卡如何处理不再可访问的记录 我发现我可以为v1.1 Kafka集群上的压缩主题生成记录,将主题配置为cleanup.policy=delete,并使用v1.1方法从主题分区“删除”记录,最后恢复cleanup.policy=compact配置 在幕后实际发生的不是从日志段中删除记录,而是将每个分区的初始偏移量增加到使用deleteRecords方法提供的值: [2019-02-07 01:46:55,282] INFO [Log partition=delete-

我在任何地方都找不到记录,但卡夫卡如何处理不再可访问的记录

我发现我可以为v1.1 Kafka集群上的压缩主题生成记录,将主题配置为
cleanup.policy=delete
,并使用v1.1方法从主题分区“删除”记录,最后恢复
cleanup.policy=compact
配置

在幕后实际发生的不是从日志段中删除记录,而是将每个分区的初始偏移量增加到使用deleteRecords方法提供的值:

[2019-02-07 01:46:55,282] INFO [Log partition=delete-records-compact-topic-2, dir=/data/kafka] Incrementing log start offset to 505317 (kafka.log.Log)
[2019-02-07 01:46:55,295] INFO [Log partition=delete-records-compact-topic-1, dir=/data/kafka] Incrementing log start offset to 485663 (kafka.log.Log)
[2019-02-07 01:46:55,298] INFO [Log partition=delete-records-compact-topic-3, dir=/data/kafka] Incrementing log start offset to 478872 (kafka.log.Log)
新使用者将开始从这些初始偏移量中读取数据,因此记录将从他们的角度有效地删除,但日志文件中的数据仍然存在。由于日志文件上的数据不会被
deleteRecords
API调用删除,而且压缩主题也不会被保留,因此在现有密钥更新和压缩发生之前,日志文件中的数据是否会一直存在?或者,日志清理器/调度程序是否会最终删除它,因为初始偏移量之前的记录不再对使用者可用


我没有完全遵循支持的模式,因为如果主题仍然配置为
cleanup.policy=compact
,AdminClient.deleteRecords方法会抛出PolicyViolationException,但对我来说,这种方法比基于保留的主题清除或主题删除/重新创建方法要简单得多。

我想清洁器会删除所有旧段,但它很可能跳过设置为压缩设置的主题目录……我想清洁器会删除所有旧段,但它很可能跳过设置为压缩设置的主题目录。。。