[英]Kafka KStream - topology design
我的流是键/值对,我想将它们保存为“原始”并在60秒内聚合到数据库。 最初我是这样做的:
->foreach
/
kStreamBuilder.stream->aggregateBy->process
但后来我发现
一种。 .aggregateby()
仅返回其匹配的对(我需要所有它们-匹配或其他)
湾 我可以在.process()
阶段使用HashMap达到相同的聚合效果。 然后,当.punctuate()
调用时,我将所有k / v对写入数据库。
因此,最终的拓扑变为:
kStreamBuilder.stream->foreach
kStreamBuilder.stream->process
.foreach()
和.process()
或者是足以完成上述? DSL层中的聚合设计用于“增量聚合”,即,当前聚合结果加上要“添加”的单个新值。 如果要一次访问60秒窗口的所有“原始记录”,则需要使用Processor API。
如果您有两个下游运算符,则无需执行任何操作。 记录将自动转发到两者。 但是,请记住,它们不会被复制,即,两个下游运算符将为每个记录看到相同的Java对象!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.