Скорее всего, вы можете достичь желаемого с помощью конфигурации запуска / окна в задании публикации.
Затем вы можете определить конфигурацию окон, в которой триггер не срабатывает до истечения 1 часа задержки.Примерно так:
Window.<String>into(FixedWindows.of(Duration.standardMinutes(1))
.triggering(AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardHours(1)))
Имейте в виду, что в итоге вы получите работу, которая просто сидит, ничего не делая, кроме как удерживать состояние в течение часа.Кроме того, вышеизложенное основано исключительно на времени обработки, поэтому оно будет ждать через час после запуска задания, даже если фактическое время создания файлов уже достаточно старое, чтобы оно могло сразу же выдать результаты.
Вы можете уточнить этодля триггера времени события, но вам, вероятно, потребуется написать собственный код для назначения временных меток вашим записям (именам файлов).Насколько мне известно, Beam в настоящее время не имеет встроенной поддержки для чтения времени создания файлов.Например, при чтении файлов через TextIO
я заметил, что всем записям назначена статическая временная метка по умолчанию.Вы должны проверить специфику преобразования, которое вы используете для чтения имен файлов, чтобы выяснить, может ли оно сделать что-то более полезное для ваших целей.Вы также можете использовать преобразование WithTimestamps
для самостоятельного назначения временных отметок.