Google Cloud Dataflow ETL (хранилище данных - > преобразование - > BigQuery)



У нас есть приложение, работающее на Google App Engine, использующее хранилище данных в качестве бэк-энда персистентности. В настоящее время приложение имеет основном функций информационной и элементарной отчетности. При реализации отчетов мы столкнулись с тем, что обработка большого объема данных (миллионы объектов) очень сложна с использованием хранилища данных и GQL. Чтобы улучшить наше приложение с помощью надлежащих отчетов и функций бизнес-аналитики, мы считаем, что лучше настроить процесс ETL для перемещения данных из хранилища данных в Сервис BigQuery.



Первоначально мы думали о реализации процесса ETL в качестве задания cron App Engine, но похоже, что поток данных также может быть использован для этого. У нас есть следующие требования для настройки процесса




  • быть в состоянии передать все существующие данные в BigQuery с помощью не потоковой передачи
    API BigQuery.

  • Как только это будет сделано, нажмите любые новые данные, когда они обновляются / создаются в
    Хранилище данных в BigQuery с помощью streaming API.


Мои вопросы




  1. Это Облако Поток данных-правильный кандидат для реализации этого конвейера?

  2. сможем ли мы протолкнуть существующие данные? Некоторые из видов имеют
    миллионы объектов.

  3. Каким должен быть правильный подход к его реализации? Мы рассматриваем два подхода.
    первый подход состоит в том, чтобы пройти через pub/sub, то есть для существующих данных создать задание cron и отправить все данные в pub/sub. Для любого нового обновления передачи данных на паб/суб в то же время она обновляется в базе данных. Трубопровод потока данных будет выбирать его из pub / sub и подтолкнуть его к BigQuery.
    Второй подход заключается в создании пакетного конвейера в потоке данных, который будет запрашивать хранилище данных и передавать любые новые данные в BigQuery.

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



Спасибо,



Ризтаак

455   2  

2 ответов:

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

Оба ваших подхода должны работать - я бы предпочел использовать пакетный конвейер для перемещения существующих данных, а затем потоковый конвейер для обработки новых данных через Cloud Pub/Sub. В дополнение к движению данных, поток данных позволяет выполнять произвольную аналитику / манипуляцию с самими данными.

Как говорится, BigQuery и хранилище данных может быть подключено напрямую. См., например, загрузка данных из облачного хранилища данных в документации BigQuery.

Еще один способ использовать сторонние решения для загрузки данных в Google BigQuery. Здесь их много . Большинство из них платные, но есть бесплатные Один с ограниченной частотой загрузки данных. В этом случае вам не нужно будет ничего кодировать.

Comments

    Ничего не найдено.