我有一个经常更新的 MySql 表。我想为过去 20 秒内更新的每个 id 拍摄快照并将值写入 redis。我使用 binlog 作为流输入,并将数据流转换为 Flink 表。我运行以下 sql。
SELECT id, ts, val
FROM my_tbl
WHERE (id, ts) IN
(
SELECT id, MAX(ts)
FROM my_tbl
GROUP BY TUMBLE(proctime, INTERVAL '20' SECOND), id
)
我知道表连接会使状态大小过大,我将 StreamQueryConfig 设置如下
qConfig.withIdleStateRetentionTime(Time.seconds(600), Time.seconds(1200));
我运行了一天的任务并得到了内存不足的错误。我怎么解决这个问题?