卡卡话题(输入:table1,table2,输出:table3)
Flink SQL Streaming 作业
CREATE TEMPORARY VIEW distinct_table1 AS
SELECT *
FROM (SELECT *,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY change_date desc) AS rownum
FROM table1)
WHERE rownum = 1;
CREATE TEMPORARY VIEW distinct_table2 AS
SELECT *
FROM (SELECT *,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY change_date desc) AS rownum
FROM table2)
WHERE rownum = 1;
Insert into table3
Select t1.col1,t1.col2..,t1.coln,t2.col1,t2.col2,t2.coln
From distinct_table t1 inner join distinct_table t2 on t1.id=t2.t1_id
表 1 和表 2 中相同记录的变化率是不确定的,有时是 10k/天,有时是一个月没有变化。 Kafka 主题配置了压缩
问题#1: 在这种情况下,在某个时刻,状态将增长到超出本地磁盘的程度。那会发生什么情况,任务管理器会失败?
问题#2: 在上述变化率不确定的场景中,任何指示 RocksDB 维护最新记录的配置(不是基于时间的,如果没有发生更新则清除记录),我们必须保留至少 1 条记录进行连接)在 level0 并清除较旧的历史记录,这样就不需要大的磁盘空间和磁盘空间不足的问题?
#1 当 RocksDB 状态超过本地磁盘的容量时,那么是的,Flink 将失败。作为解决方法,您可以通过增加并行度来重新分片状态。
#2 可用的是 https://nightlies.apache.org/flink/flink-docs-stable/docs/dev/table/config/#table-exec-state-ttl,这不是你所拥有的要求。
为了更好地控制状态保留策略,您可以使用 DataStream API 编写作业,但这将是一项艰巨的任务。