Как лучше всего выполнять запросы BigQuery на платформе Google Cloud? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть несколько файлов, которые содержат тысячи строк, которые мне нужно вставить в Google BigQuery, поэтому, поскольку время выполнения превышает лимит запросов 60 с в AppEngine, я переместил запросы BQ в очередь задач.

Пока это работает очень хорошо, но я не знаю, является ли это лучшим местом для размещения запросов BQ.Я говорю это, потому что запросы занимают до 3 минут, и я думаю, что это немного медленно.Как вы думаете, есть более быстрое / лучшее место для запроса BQ?

PS: я использую API Google BigQuery для отправки запросов.

Ответы [ 3 ]

0 голосов
/ 12 мая 2018

Также проверьте Potens.io (также доступно на Cloud Launcher )

Magnus - автоматизатор рабочих процессов, входящий в комплект Potens, - поддерживает все BigQuery, облачное хранилище и большинство API-интерфейсов Google, а также несколько простых задач типа задач, таких как задача BigQuery, задача экспорта в хранилище, задача Loop и многие другие

Раскрытие информации: я создатель этих инструментов и лидер команды Potens

0 голосов
/ 15 мая 2018

Если у вас есть текстовые файлы в Google Cloud Storage, Cloud Dataflow может стать естественным решением для вашей ситуации {1}.

Вы можете использовать предоставленный Google шаблон, чтобы сэкономить время в процессесоздание конвейера облачного потока данных {2}.Таким образом, вы можете создать пакетный конвейер для перемещения (и преобразования, если хотите) данных из Google Cloud Storage (файлы) в BigQuery.

{1}: https://cloud.google.com/dataflow/

{2}: https://cloud.google.com/dataflow/docs/templates/provided-templates#cloud-storage-text-to-bigquery

0 голосов
/ 11 мая 2018

Есть два варианта:

  1. Ваш файл с данными отформатирован для использования с Заданиями загрузки BQ . В этом случае - вы запускаете загрузку задания в очередь задач - и сохраняете jobid, полученный при вызове REST в хранилище данных. И выйти из очереди задач. В качестве другого процесса вы настраиваете appengine cron, который запускается, скажем, каждую минуту и ​​просто проверяет все запущенные рабочие задания и статус обновления (процесс из cron запускается как очередь задач и использует - таким образом, он будет ограничен 10 минутами), если он был изменен, и при необходимости запускает другой процесс. В этом случае я думаю, что это будет довольно масштабируемым

  2. Вы обрабатываете файл и каким-то образом вручную вставляете строки - в этом случае наилучшим вариантом будет использование pubsub или повторный запуск нескольких задач в очереди задач - путем ручного разделения данных на мелкие части и использования API вставки BQ Streaming - конечно, это зависит от размера вашей строки - но я обнаружил, что 1000-5000 записей на процесс здесь хорошо работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...