Apache Beam - Как суммировать PCollection <KV <String, Int >> из всех окон по ключу

Учитывая PCollection<KV<String, Int>> с использованием окон с фиксированным временем, как я могу суммировать все Int посредством Stringключ от всех окон?

например


PCollection<KV<String, Int>> pc = ...;  

pc.apply("FixedWindows", Window.<~>into(FixedWindows.of(WindowDuration)) // apply fixed windowing

Как я могу суммировать все окна по каждому ключу в этой настройке?

Должен ли я использовать Combine.GloballyAsSingletonView<InputT,OutputT>с кастомным CombineFn? если да, то как мне это реализовать?

2 ответа

Один из вариантов, если у вас не слишком много разных ключей и результат суммы меньше чем Long.MAX_VALUE, вы можете использовать Beam Metrics, напримерCounter, для этого.

Комбинирование всегда ограничено примененным вами окном. Подводя итог по всем элементам, вам нужно сначала вернуть Window в GlobalWindows.