Мой конвейер потока данных объединяет данные о событиях в типизированные для каждого сеанса и для каждого пользователя. Я использовал GroupByKey для событий, связанных с идентификатором сессии. Сессии сгруппированы в родительские типы, идентифицируемые по идентификатору пользователя и идентификатору устройства с использованием одного и того же шаблона на следующем уровне иерархии. Таким образом, один сеанс может генерировать много событий, но, в свою очередь, один пользователь может генерировать много сеансов.
Теперь я хотел бы обобщить эти данные на каждом уровне иерархии. Я использовал объявление StateSpe c для сохранения состояния на уровне события. Так, например, свойство количества событий может быть увеличено в моей обработке событий ParDo. (Вариант использования: например, генерация события ошибки за сеанс для всех пользователей.)
Но так как каждый ParDo is stati c - я не могу получить доступ к ValueState вне контекста ParDo, даже если я понимаю, что это состояние поддерживается в области окна. (Может быть, это из-за замысла.) Есть ли способ получить доступ к этому состоянию уровня окна, используя постоянную библиотеку состояния луча в другом ParDo, чем там, где это было первоначально объявлено? Как если бы я мог объявить это на уровне конвейера?
Я понимаю, что это может привести к некоторому снижению производительности, поскольку среда должна управлять параллелизмом, но фактическая обработка кажется незначительной. (Просто увеличивая значения.) Поэтому я бы предпочел записать это в поле состояния уровня окна, а не просачивать значения через мою иерархию.