Преобразование данных в события pubsub

У меня есть конвейер потока данных, который собирает пользовательские данные, такие как навигация, покупки, грубые действия и т. д. У меня есть это требование, чтобы иметь возможность идентифицировать шаблоны в реальном времени, а затем отправлять события pubsub, которые могут прослушивать другие службы, чтобы предоставлять пользователю подсказки в реальном времени. , предложения или рекламные акции.

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

Это правильный подход? Есть ли способ лучше?


person chchrist    schedule 25.08.2016    source источник


Ответы (1)


Это определенно может работать в некоторых случаях.

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

Однако, в зависимости от скорости отправки пользовательских данных и размера сеанса, это может привести к хранению много данных в коллекции PCollection и многократному повторению этого шаблона (для одних и тех же данных). , так как вы должны повторно использовать все данные в сеансе. Кроме того, вы не можете использовать элементы, полученные до этого сеанса.

Иногда лучше сохранить состояние для каждого пользователя (без повторного сопоставления с шаблоном всех данных пользователя для этого сеанса). Использование состояния на самом деле избавило бы от необходимости работать с окнами. Теперь новый процесс будет выглядеть так:

Для каждого поступающего элемента:

  1. Получить текущее состояние

  2. Рассчитать новое состояние (на основе старого состояния и нового элемента)

  3. При необходимости отправьте сообщение в PubSub.

Чтобы сохранить свое состояние, вы можете использовать BigTable или Datastore.

person Fematich    schedule 25.08.2016
comment
Да, окна сеансов будут содержать много данных, и повторный запуск одних и тех же шаблонов может быть очень дорогостоящим... Для получения состояния из BigTable или Datastore меня беспокоит скорость, но я думаю, что ее стоит проверить. - person chchrist; 26.08.2016
comment
Bigtable может масштабироваться. Время отклика, выражающееся одной цифрой в миллисекундах, является нормой, когда все операции выполняются в одной облачной зоне. Существуют также массовые операции для повышения пропускной способности. Все это мы можем обсудить на досуге. - person Solomon Duskis; 29.08.2016
comment
еще не играл с Bigtable. Я попробую. Я хотел бы обсудить это с вами. - person chchrist; 30.08.2016
comment
Не стесняйтесь обращаться к группе Google google-cloud-bigtable-discuss, как описано в: cloud .google.com/bigtable/docs/support - person Solomon Duskis; 30.08.2016