我有 3 个流 A、B 和 C,我应该将它们加入到一个流中,让我们称之为 ABC 并对其执行一些操作。
重要的是,我使用尺寸为 X 和滑动 Y 的滑动窗口,其中 Y <= X*3
所有流都包含一些我用于连接的通用 ID,X、Y 是以秒为单位定义的时间参数。
我目前的实现是使用大小为 X 的翻转窗口将流 A 和 B 连接到 AB,然后使用大小为 X 和滑动 Y 的滑动窗口将 AB 与 C 连接起来。
在以下情况下,这可能会导致答案不正确:流 A 在时间 0 接收消息,流 B 在时间 Y+1 接收消息。在这种情况下,两条消息都应该进入同一个滑动窗口,因为 Y+1
我是否可以使用单个滑动窗口在 Flink 中进行多流连接,类似于在 Spark 中连接多个数据帧的方式?
我认为在这种情况下有效的是使用两个滑动窗口连接 - 一个用于计算AB,另一个用于将这些结果与C连接。您可能遇到的一个问题是第一个连接生成的记录上的时间戳 - 我不确定 Flink 会将哪些时间戳放入包装 AB 事件的 StreamRecords 中,但对于正常(非连接(窗口,Flink 将结果记录上的时间戳设置为窗口结束时间。在这种情况下,这可能不是您想要的。如果这是一个问题,您可以在第一个滑动窗口之后放置一个额外的时间戳分配器,以便在第二个连接(使用 C(之前适当地设置时间戳。