Scala 使用Kafka流处理窗口中的项目
我试图用卡夫卡流在滑动窗口中处理一些事件,但我想我不了解卡夫卡流的一些细节,所以我不能做我想做的事情 我所拥有的:Scala 使用Kafka流处理窗口中的项目,scala,apache-kafka,apache-kafka-streams,Scala,Apache Kafka,Apache Kafka Streams,我试图用卡夫卡流在滑动窗口中处理一些事件,但我想我不了解卡夫卡流的一些细节,所以我不能做我想做的事情 我所拥有的: 输入关键/值为(Int,Person)的事件主题 我想要的是: 在10分钟的滑动窗口内阅读这些事件 处理滑动窗口中的每个元素 过滤并计算一些元素,向另一个卡夫卡触发一些事件 主题(如检测到错误的值) 简单地说:在10分钟的滑动窗口中获取所有事件,对它们进行foreach,在窗口上下文中计算一些统计数据/事件,转到下一个窗口 我尝试的是: 我尝试混合流和处理器API,如:
- 输入关键/值为(Int,Person)的事件主题
- 在10分钟的滑动窗口内阅读这些事件
- 处理滑动窗口中的每个元素
- 过滤并计算一些元素,向另一个卡夫卡触发一些事件 主题(如检测到错误的值)
val streamBuilder = new StreamsBuilder()
streamBuilder.stream[Int, Person](topic)
.groupBy((_, value) => PersonWrapper(value.id, value.name))
.windowedBy(TimeWindows.of(10 * 60 * 1000L).advanceBy(1 * 60 * 1000L))
// now I have a window of (PersonWrapper, Person) right ?
streamBuilder.build().addProcessor(....)
现在我要在这个拓扑中添加一个处理器来处理滑动窗口的每个事件。
我不明白什么是TimeWindowsStream,为什么我们应该使用KGroupedStream来应用事件窗口。如果有人能告诉我卡夫卡流和我想做什么。你读过文档了吗:
aggregate()
进行实际处理(不需要手动附加Processor
;调用aggregate()
将为您隐式添加Processor
)KGroupedStream
和timewindowedkstream
基本上只是助手类和一种中间表示形式,允许流畅的API设计
本教程也是入门的好方法:
您还应该查看示例:你好,Matthias,谢谢,我找到了答案。我需要的是一个计算元素数量的聚合。