Одним из способов очистки состояния является явный вызов clear()
для объекта состояния (например, объекта ValueState), когда он больше не нужен для определенного ключа.Обычно это делается в onTimer()
обратном вызове в ProcessFunction
.
. Другой возможный подход заключается в использовании состояния времени жизни для управления его жизненным циклом.
Я не пробовал использовать состояние TTL с запрашиваемым состоянием, но не вижу причин, по которым оно не должно работать.Однако с Flink 1.7 состояние TTL фактически очищает состояние (для ключа) только при обращении к состоянию (для этого ключа) или при создании моментального снимка полного состояния.Так что в вашем конкретном случае этот механизм TTL состояния может быть не очень полезным.