My Apache -Beam / Dataflow конвейер создает ключевые PC-коллекции пользовательских типов из событий pub / sub. Результат предварительного суммирования теперь равен PCollection<KV<String, MyCustomObject>>
. Далее мне нужно обобщить эти данные для отчетов. Коллекции структурированных объектов могут быть очень большими, поэтому возможны исключения нехватки памяти, если я не буду осторожен.
В документации я вижу, что утилиты Combine (Combine.globally with CombineFn) и CombineWithContext доступный. Тем не менее, документация и примеры кода все еще очень легки.
На этом последнем этапе моего конвейера - мне нужно суммировать эти большие PCollections, но они являются сложными структурированными объектами, и я не только вычисляю средние значения. Я также хочу рассчитать медиану некоторых свойств.
Я могу представить, как сэмплы работают в N рабочих экземплярах. Например, должна быть какая-то «средневзвешенная», рассчитываемая по рабочим экземплярам в рамках. Но это не будет работать для медианы. Для этого предназначен CombineWithContext? Должно ли сохраняться состояние срединных массивов с контекстом с боковым вводом / выводом? Или это может быть достигнуто другим способом, используя только Combine.globally?
Буду признателен за любые примеры кода.