假设我有一个名为 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/