FLo*_*pix 15 apache streaming join stream apache-flink
我有两个想要组合的数据流.问题是一个数据流的频率比另一个高得多,并且有时一个流根本没有接收事件.是否可以使用来自一个流的最后一个事件,并在即将到来的每个事件上将其与另一个流连接?
我找到的唯一解决方案是使用join函数,但您必须指定一个公共窗口,您可以在其中应用join函数.当一个流没有接收到任何事件时,这是未达到的窗口.
是否有可能对来自任何一个流或另一个流的每个事件应用join函数并维护上次使用的事件的状态并将此事件用于join函数?
提前感谢任何有用的提示!
Dav*_*son 17
根据每个特定用例的要求,在Flink中组合或连接两个流有许多不同的方法.当这样做"手",你想使用弗林克的ConnectedStreams的一个RichCoFlatMapFunction或CoProcessFunction.这些中的任何一个都将允许您保持托管状态(即不经常更新的流中的最后一个元素),并将其与更快的流连接.CoProcessFunction增加了使用定时器的功能,如果相关,则应该使用它来清除过期密钥的状态.
Flink培训网站上有关于实施此类连接的不同方法的练习:Enrichment Joins.有关更简单的示例,请参阅有关" 到期状态"的练习.
每个最近发布的Flink都包含了额外的内置连接功能,因此在这一点上不需要自己动手.有关更多详细信息,请参阅有关使用DataStream API加入的页面,与Table API 连接以及加入SQL.
| 归档时间: |
|
| 查看次数: |
6278 次 |
| 最近记录: |