Как создать скользящие окна с Apache Beam? Не скользящее и не фиксированное, а подвижное окно
Скажем, я хочу вычислить среднее значение определенного показателя за последние 10 минут после каждой минуты и сравнить его со средним значением того же показателя за последние 20 минут после каждой минуты. Мне нужно 2 окна (не 10 раздвижных окон против 20 раздвижных окон) или 2 окна фиксированной длительности, с ранним срабатыванием. Мне нужно 2 окна, которые должны двигаться вперед на одну минуту (продолжительностью 10 минут и 20 минут каждое) каждую минуту. Кроме того, если бы я мог отказаться от всех, кроме самых последних из раздвижных окон, моя проблема могла бы быть решена. В противном случае несколько раздвижных окон очень дороги.
Не могли бы вы помочь здесь? Пользовательская функция WindowFn() будет очень полезна
1 ответ
Я должен обновить то, что я в конечном итоге делал в конце концов. Я создал глобальное окно с AllowedLateness, равным 1 часу, и запускаю каждую минуту многократно навсегда, с накоплением панелей. В этом глобальном окне я применил DoFn-фильтрацию для элементов с метками времени за последние 10 минут (Present Instant.minus 10 mins) и событий за последние 20 минут (Present Instant.minus 20 mins), чтобы создать 2 разных PCollections. Я применил эту временную фильтрацию дважды - один раз к выходу триггера глобального окна, чтобы добавить его к PCollection(s) на 10 минут, 20 минут, а затем снова к самой коллекции, чтобы удалить все те, которые больше не являются частью времени продолжительность. На данный момент эти 2 PCollection(s) служат скользящим окном, но мне нужно проверить результаты, чтобы убедиться, что это действительно работает.