java - 如何聚合kafka流中的多个分区

标签 java apache-kafka apache-kafka-streams spring-kafka

假设我有一个名为 events 的主题,有 3 个分区,我在其中发送字符串。每个分区的消息如下所示:

["userId:test1", "userId:test2", "userId:test3", "userId:test4"] 

在分区 1 上。

["userId:test2", "userId:test4", "userId:test6", "userId:test8"] 

在分区 2 上。

["userId:test3", "userId:test6", "userId:test9", "userId:test12"] 

在分区 3 上。

我想查看以下聚合的结果。

test1 1
test2 2
test3 2

(顺序无关紧要。)

这可能吗?如果可能的话,我希望你能给我一些建议。否则,我希望您给我第二种选择,以便我可以以类似的方式工作。

谢谢。

最佳答案

是的,你可以做到这一点。

我假设 "userId:test1" 是一个键值对,即 key="userId"value="test1" 等。对于这种情况,您可以将值设置为新键并应用 count()

StreamsBuilder builder = new StreamsBuilder();
builder.stream("your-input-topic")
       .groupBy((k,v) -> v)
       .count()
       .toStream()
       .to("your-output-topic");

查看文档了解更多详细信息:https://kafka.apache.org/20/documentation/streams/developer-guide/

关于java - 如何聚合kafka流中的多个分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51840838/

相关文章:

Java - 从动态 XML 中删除子节点

java - 在java中多次搜索文本文档

Java StackOverflowError - 生成相对较大的二维数组(350 x 350)

java - 表面被破坏后如何​​恢复视频播放?

windows - Windows 上的 Kafka - 启动服务错误

apache-kafka - 使用 Spring 访问 Kafka Stream 状态存储

apache-kafka - Kafka 服务器配置 - 监听器与广告监听器

c++ - 只读取来自 Kafka 主题的最后一条消息

apache-kafka - Kafka Streams 应用程序版本 0.10.2.0 存在问题

java - Apache Kafka 的流连接示例?