使用 flink interval join 的状态清理行为
state clean up behavior with flink interval join
我在
读书
它有以下例子:
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中会保存所有的状态,就像普通的regular inner join一样吗?因此,也许大尺寸的状态将保留在 Flink
如果o.order_time
和s.ship_time
是事件时间属性,那flink会依赖watermark做状态清理吗?这样小尺寸的状态将保留在 Flink
是的,没错。 Flink SQL 之所以有时间属性的概念是为了让合适的流式查询可以自动清理它们的状态,间隔连接就是这样的查询的一个例子。版本化表上的时间 windows 和时间连接也以类似的方式工作。
我在
读书它有以下例子:
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中会保存所有的状态,就像普通的regular inner join一样吗?因此,也许大尺寸的状态将保留在 Flink如果
o.order_time
和s.ship_time
是事件时间属性,那flink会依赖watermark做状态清理吗?这样小尺寸的状态将保留在 Flink
是的,没错。 Flink SQL 之所以有时间属性的概念是为了让合适的流式查询可以自动清理它们的状态,间隔连接就是这样的查询的一个例子。版本化表上的时间 windows 和时间连接也以类似的方式工作。