繁体   English   中英

Kafka KStream-拓扑设计

[英]Kafka KStream - topology design

我的流是键/值对,我想将它们保存为“原始”并在60秒内聚合到数据库。 最初我是这样做的:

                       ->foreach
                     /
kStreamBuilder.stream->aggregateBy->process

但后来我发现

一种。 .aggregateby()仅返回其匹配的对(我需要所有它们-匹配或其他)
我可以在.process()阶段使用HashMap达到相同的聚合效果。 然后,当.punctuate()调用时,我将所有k / v对写入数据库。

因此,最终的拓扑变为:

kStreamBuilder.stream->foreach
kStreamBuilder.stream->process

问题:

  1. 这是一种“合理”的方式来获得将所有kv对写入匹配的结果吗? (通过foreach的所有值,以及通过进程的任何对+其余值)
  2. 我是否需要发送它之前(在某种程度上)除以原始流.foreach().process()或者是足以完成上述?

DSL层中的聚合设计用于“增量聚合”,即,当前聚合结果加上要“添加”的单个新值。 如果要一次访问60秒窗口的所有“原始记录”,则需要使用Processor API。

如果您有两个下游运算符,则无需执行任何操作。 记录将自动转发到两者。 但是,请记住,它们不会被复制,即,两个下游运算符将为每个记录看到相同的Java对象!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM