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
Apache kafka 如何清理Kafka KStream内部变更日志和重新分区主题_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Apache kafka 如何清理Kafka KStream内部变更日志和重新分区主题

Apache kafka 如何清理Kafka KStream内部变更日志和重新分区主题,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,卡夫卡版本1.1 我们使用Kafka KStream根据事件本身中选定的键聚合事件。下面是它的大致功能 KStream[String, Event] .selectKey[String]({ (_, event) => aggregationKey(event) } .groupByKey() .aggregate( () => { Event("", "") }

卡夫卡版本1.1

我们使用Kafka KStream根据事件本身中选定的键聚合事件。下面是它的大致功能


KStream[String, Event]
.selectKey[String]({ (_, event) =>
        aggregationKey(event)
      }
.groupByKey()
.aggregate(
        () => {
          Event("", "")
        },
        (k: Any, event: Event, aggregate: Event) => aggregator(k, event, aggregate, inputTopicName),
        Materialized
          .as[String, Event, KeyValueStore[Bytes, Array[Byte]]]("store-name")
          .withValueSerde(protoSerde)
      )
.toStream
.to(outTopicName)
在“aggregator”函数中,我根据特定条件返回null base,以生成一个逻辑删除事件

卡夫卡创建了两个主题:重新分区和变更日志。在重新分区主题中,保留设置为-1。无论墓碑事件如何,这些主题都在不断增长。我找不到办法把它们清理干净

我们的要求是直截了当的:

只要满足某个键的条件,该键的聚合更改日志就没有用处。我们希望彻底永久地清除该密钥的所有事件


请就如何清理基于密钥的kstream内部主题提供建议?非常感谢。

上游重新分区主题不应无限扩展:正如您注意到的,保留时间设置为
-1
(以避免数据丢失)。但是,在处理记录后,KafkaStreams会显式清除该主题

此外,如果从
聚合器返回
null
,则
KTable
存储中的相应条目将被删除,并且一个墓碑将被发送到changelog主题并发送到下游。当然,墓碑也会首先附加到主题中,只有在代理端主题压缩运行时,旧记录才会被“垃圾收集”