gpt4 book ai didi

join - 在 Apache Flink 中合并两个流,无论窗口时间如何

转载 作者:行者123 更新时间:2023-12-02 05:21:17 31 4
gpt4 key购买 nike

我有两个想要合并的数据流。问题在于一个数据流的频率比另一个数据流高得多,并且有时一个数据流根本不接收事件。是否可以使用一个流中的最后一个事件并将其与另一个流中的每个即将到来的事件结合起来?

我发现的唯一解决方案是使用 join 函数,但是您必须指定一个公共(public)窗口,您可以在其中应用 join 函数。当一个流未接收任何事件时,即未到达窗口。

是否可以对来自一个流或另一个流的每个事件应用联接函数,并维护最后消费事件的状态并将该事件用于联接函数?

最佳答案

根据每个特定用例的要求,有许多不同的方法可以在 Flink 中组合或加入两个流。当“手动”执行此操作时,您希望将 Flink 的 ConnectedStream 与 RichCoFlatMapFunction 或 CoProcessFunction 结合使用。其中任何一个都允许您保持托管状态(即不经常更新的流中的最后一个元素),并将其与更快的流连接。 CoProcessFunction 添加了使用计时器的功能,您应该使用计时器来清除过期 key 的状态(如果相关)。

Flink 培训网站上有一个关于实现此类连接的不同方法的练习:Enrichment Joins 。对于更简单的示例,另请参阅关于 Expiring State 的练习.

Flink 的每个最新版本都包含额外的内置连接函数,因此此时不太需要自行推出。请参阅 joining with the DataStream API 上的页面, joins with the Table API ,和joins in SQL了解更多详情。

关于join - 在 Apache Flink 中合并两个流,无论窗口时间如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46014793/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com