Волна ИИПодписаться
← Назад
Исследования

Почему ML-модель видит 3 транзакции вместо 5: ловушка Event Time и Watermarks в Apache Flink

26.08.2026 · habr.com ↗

Представьте: пользователь совершает пять покупок за пару минут, все транзакции успешно попадают в Kafka, consumer lag почти нулевой, Flink работает стабильно. Но ML-модель антифрод-системы получает на вход признак transactions_in_10_minute_window = 3 вместо 5, а вероятность мошенничества падает с 0.91 до 0.42. В чём подвох?

Проблема в том, что Flink по умолчанию использует event time (время события), а не processing time (время обработки). Водяные знаки (watermarks) определяют, когда окно считается завершённым. Если водяной знак установлен слишком агрессивно или данные приходят с небольшим опозданием, окно закрывается раньше, чем в него попадёт часть событий. В результате агрегация оказывается неполной, а модель получает искажённые признаки.

Решение — настройка allowed lateness (разрешённое опоздание) и более консервативные водяные знаки. Например, можно задать задержку в несколько секунд или использовать периодические водяные знаки на основе наблюдаемого максимума опоздания. Также полезно логировать момент закрытия окна и сравнивать с фактическим временем поступления событий, чтобы выявить расхождения.

Источник: habr.com
← Все новости AI Wave