Мое приложение flink выполняет следующий
- источник: чтение данных в виде записей из Kafka
- split: на основе определенных критериев
- window: timewindow of10 секунд, чтобы объединиться в одну массовую запись
- приемник: сбросить эти массовые записи в эластичный поиск
Я столкнулся с проблемой, когда потребитель flink не может хранить данные в течение 10 секунд и выдает следующее исключение:
Причина: java.util.concurrent.ExecutionException: java.io.IOException: Размер состояния больше максимально допустимого состояния с поддержкой памяти.Size = 18340663, maxSize = 5242880
Я не могу применить countWindow, потому что, если частота записей слишком медленная, приемник упругого поиска может быть отложен на длительное время.
Мой вопрос:
Можно ли применить функцию ИЛИ TimeWindow и CountWindow, которая выглядит как
> if ( recordCount is 500 OR 10 seconds have elapsed)
> then dump data to flink