gpt4 book ai didi

apache-kafka - 如何优化聚合以便首先完成每个消费者的聚合?

转载 作者:行者123 更新时间:2023-12-04 04:04:23 25 4
gpt4 key购买 nike

我有一个名为 input 的 kafka 主题,它有多个分区。

假设一条消息看起来像这样:

{
"key": 123456,
"otherKey": 444,
...
}

记录按“键”分区(因此相同的键将始终由相同的 Kafka 消费者处理)。

现在我想计算每个“otherKey”每分钟的事件数。据我了解,这可以使用 KStreams 轻松完成,如下所示:

input.groupBy((k, v) -> v.getOtherKey())
.windowedBy(TimeWindows.of(Duration.of(60, SECONDS)))
.count()
.suppress(untilWindowCloses(Suppressed.BufferConfig.unbounded()))
.toStream()
.to("output");

使用 groupBy,Kafka Streams 会将数据重新分区到内部 kafka 主题,input 主题中的每个事件对应 1 个事件。

这对我来说是一种浪费。它可以根据“otherKey”计算每个 kafka 消费者中的消息(仅计算消费者的分区),并根据“otherKey”每分钟仅向内部主题发布一次消息。

有没有办法使用 Kafka Streams 来做到这一点?

最佳答案

您对行为的观察是正确的,您优化执行的想法也是正确的。

不过,这个优化目前还没有实现。原因是,suppress() 是一个相当新的运算符,在引入 suppress() 之前,您描述的优化没有意义。

不过,如果您真的想进行此优化,则可以使用 Processor API 构建它。

关于apache-kafka - 如何优化聚合以便首先完成每个消费者的聚合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53976469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com