Apache Управление / обработка состояния балки - состояние общего доступа через ParDo в области окна? - PullRequest
0 голосов
/ 24 февраля 2020

Мой конвейер потока данных объединяет данные о событиях в типизированные для каждого сеанса и для каждого пользователя. Я использовал GroupByKey для событий, связанных с идентификатором сессии. Сессии сгруппированы в родительские типы, идентифицируемые по идентификатору пользователя и идентификатору устройства с использованием одного и того же шаблона на следующем уровне иерархии. Таким образом, один сеанс может генерировать много событий, но, в свою очередь, один пользователь может генерировать много сеансов.

Теперь я хотел бы обобщить эти данные на каждом уровне иерархии. Я использовал объявление StateSpe c для сохранения состояния на уровне события. Так, например, свойство количества событий может быть увеличено в моей обработке событий ParDo. (Вариант использования: например, генерация события ошибки за сеанс для всех пользователей.)

Но так как каждый ParDo is stati c - я не могу получить доступ к ValueState вне контекста ParDo, даже если я понимаю, что это состояние поддерживается в области окна. (Может быть, это из-за замысла.) Есть ли способ получить доступ к этому состоянию уровня окна, используя постоянную библиотеку состояния луча в другом ParDo, чем там, где это было первоначально объявлено? Как если бы я мог объявить это на уровне конвейера?

Я понимаю, что это может привести к некоторому снижению производительности, поскольку среда должна управлять параллелизмом, но фактическая обработка кажется незначительной. (Просто увеличивая значения.) Поэтому я бы предпочел записать это в поле состояния уровня окна, а не просачивать значения через мою иерархию.

1 Ответ

0 голосов
/ 26 февраля 2020

Совместное использование состояния ParDos не поддерживается, и его даже не следует поощрять, поскольку оно создает зависимости между ParDos, которые нарушают простой контракт: ParDo может работать на PCollection независимо, таким образом, разблокируя массивный параллелизм.

...