GroupByKey не обновляется при очень длинном PTransform с окном - PullRequest
1 голос
/ 18 июня 2019

Я работаю над потоковым конвейером Java Apache Beam (2.13.0), который работает в облачном потоке данных Google.У меня давно работает PTransform (для одного входа он выполняет много работы, выводит несколько выходов и может занимать> 10 минут).

Я хочу вернуть пользователю ранние результаты обработки.У меня есть шаг Window and Combine после этого.Ранние триггеры, похоже, не работают с долго работающим PTransform.Шаг Объединить выводит элементы после того, как PTransform заканчивает обработку элемента (а не возвращает ранние результаты).

Я пробовал много разных ранних оконных функций.Например, я попытался сделать триггеры счетчика элементов навсегда, и это не работает.То же самое для вечной обработки триггеров, основанных на времени (например, каждые 10 секунд обработки).Я пробовал GlobalWindows, Fixed Windows, Session Windows и т. Д.

Вот грубый псевдокод для того, что я делаю.

p.apply(PubsubIO.readStrings().fromSubscription(options.getInput()));
 .apply(FlatMapElements.via(new LongRunningCalculation()))
 .apply(<I've tried a variety of window functions>)
 .apply(Combine.perKey(new SumMetrics()))
 .apply(DatastoreIO.v1().write().withProjectId(options.getProject()));

Для функций Window я пробовалмного разных оконных функций, чтобы посмотреть, смогу ли я получить что-нибудь, чтобы вернуться рано.Я не могу заставить его вернуться рано.

Вот основной.

Window.into(new GlobalWindows())
 .triggering(Repeatedly.forever(AfterPane.elementCountAtLeast(10)))
 .withAllowedLateness(Duration.ZERO)
 .discardingFiredPanes());

Даже для этого, даже если Окно добавило >> 10 элементов, GroupBy вшаг объединения не выводит никаких строк.

Ожидается: если у меня будет длительное выполнение PTransform, я все еще ожидаю, что ранние триггеры все еще будут срабатывать.

Фактически: я не могузаставить ранние триггеры работать.

Любой совет?

...