apache-flink - 使用 flink 间隔连接的状态清理行为
问题描述
我正在阅读
它有以下示例:
SELECT *
FROM Orders o, Shipments s
WHERE o.id = s.order_id
AND o.order_time BETWEEN s.ship_time - INTERVAL '4' HOUR AND s.ship_time
我得到以下两个问题:
如果
o.order_time
和s.ship_time
是正常时间列,而不是事件时间属性,那么所有状态都将保存在 Flink 中,就像正常的常规内部连接一样?所以,也许大尺寸的状态会保留在 Flink如果
o.order_time
和s.ship_time
是事件时间属性,那么 flink 会依赖 watermark 来做状态清理吗?这样小尺寸的状态就会保存在 Flink 中
解决方案
对,那是正确的。Flink SQL 之所以有时间属性的概念,是为了让合适的流式查询可以自动清理它们的状态,间隔连接就是这种查询的一个例子。版本化表上的时间窗口和时间连接也以类似的方式工作。
推荐阅读
- python - 从字符串中查找多个模式并返回偶数模式
- google-app-engine - Google App Engine 中的数据存储问题使应用程序不允许输入工作
- dart - TabBarView 动态更新列表
- php - 如何在cpanel中恢复提交的帖子数据
- ubuntu - CSS 媒体查询“prefers-reduced-motion”在 Ubuntu 上的 Firefox 中破坏了 bootstrap 4 动画
- java - 打印两个字符之间的所有文本
- java - 在 Java 9 中读取和写入 CMYK TIFF
- java - 静态方法只能识别一个对象而不能识别其他对象
- mysql - mysql 选择一个字段需要不同的条件
- swift - 在展开可选错误时意外发现 nil