Flink SQL 优化
设置空闲状态保留时间 不设置空闲状态保留时间会导致状态爆炸。 FlinkSQL 的 regular join inner 、 left 、 right ),左右表的数据都会一直保存在状态里,不会清理!要么设置 TTL ,要么使用 Flink SQL 的 interval join 。 使用 Top N 语法进行去重,重复数据的出现一般都位于特定区间内(例如一小时或一天内),过了这段时间之后,对应的 状态就不再需要了。 Flink SQL可以指定空闲状态(即未更新的状态)被保留的最小时间 当状态中某个 key对应的 状态未更新的时间达到阈值时, 该条状态被自动清理。 API 设置: tableEnv.getConfig().setIdleStateRetention(Duration.ofHours(1)); 配置参数设置: Configuration configuration = tableEnv.getConfig().getConfiguration(); configuration.setString("table.exec.state.ttl", " 1 h" ); ....