Какое разумно ожидаемое снижение производительности при использовании окон обработки в Flink? У меня есть задание мигать, которое может обрабатывать около 25K записей без использования окно.
Как только я добавляю к заданию временное окно, производительность падает примерно до 13 Кбайт даже без обработки его вывода. Использование разных периодов времени (1 с, 10 с, 120 с) не имеет значения, поскольку все они дают одинаковые результаты.
Я хочу просто получить самую последнюю запись с одним и тем же идентификатором в течение каждой секунды. На данный момент окно выглядит примерно так:
stream.keyBy(Record::getId)
.window(TumblingProcessingTimeWindows.of(Time.seconds(1)))
.reduce((rec1, rec2) -> rec2);
Является ли падение производительности примерно на 50% разумной «ценой» за использование Windows?
Был ли у работы без окон ключ? Перемешивание сети и соответствующая сериализация / десериализация, которые исходят от keyBy, являются дорогостоящими.
Бэкэнд состояния @gcandal: MemoryStateBacked. контрольная точка: отключено
@DavidAnderson нет, у работы без окон не было ключа. Шаги перед окном: источник, разделение, фильтр и карта. Никакого большого волшебства. Все на одной машине с параллелизмом = 1.
Какой государственный бэкэнд вы используете? У вас включена контрольная точка?