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.