Flink SQL 優(yōu)化
設置空閑狀態(tài)保留時(shí)間 不設置空閑狀態(tài)保留時(shí)間會(huì )導致?tīng)顟B(tài)爆炸。 FlinkSQL 的 regular join inner 、 left 、 right ),左右表的數據都會(huì )一直保存在狀態(tài)里,不會(huì )清理!要么設置 TTL ,要么使用 Flink SQL 的 interval join 。 使用 Top N 語(yǔ)法進(jìn)行去重,重復數據的出現一般都位于特定區間內(例如一小時(shí)或一天內),過(guò)了這段時(shí)間之后,對應的 狀態(tài)就不再需要了。 Flink SQL可以指定空閑狀態(tài)(即未更新的狀態(tài))被保留的最小時(shí)間 當狀態(tài)中某個(gè) key對應的 狀態(tài)未更新的時(shí)間達到閾值時(shí), 該條狀態(tài)被自動(dòng)清理。 API 設置: tableEnv.getConfig().setIdleStateRetention(Duration.ofHours(1)); 配置參數設置: Configuration configuration = tableEnv.getConfig().getConfiguration(); configuration.setString("table.exec.state.ttl", " 1 h" ); ....