Пример использования для потока данных (маленькие SQL запросов) - PullRequest
0 голосов
/ 19 июня 2020

Мы используем Cloud Function для преобразования наших данных в BigQuery: - все данные находятся в BigQuery - для преобразования данных мы используем только SQL запросов в BigQuery - каждый запрос выполняется один раз в день - наш самый большой запрос SQL выполняется примерно 2–3 минуты, но большинство запросов выполняется менее 30 секунд - у нас примерно 50 запросов выполняется один раз в день, и это число увеличивается

Сначала мы попытались сделать то же самое (SQL запросов в BigQuery) с Dataflow, но: - только для запуска потока данных потребовалось от 10 до 15 минут - его сложнее кодировать, чем наши облачные функции - в то время Dataflow SQL не был реализован

Каждый раз, когда мы разговариваем с кем-либо, использующим GCP (пользователями, инструкторами или аудиторами), они рекомендуют использовать Dataflow. Итак, в нашем случае мы пропустили что-то «magi c» с Dataflow? Есть ли способ запустить его за секунды, а не за минуты?

Кроме того, если мы используем потоковую передачу в Dataflow, как рассчитываются затраты? Я понимаю, что пакетно мы платим за то, что используем, но что, если мы будем использовать потоковую передачу? Считается ли это постоянно действующей услугой?

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 19 июня 2020

Что касается первой части, BigQuery VS Dataflow, я обсуждал это с Google недели go, и их совет ясен:

  • Когда вы можете express преобразовать в SQL, и вы можете получить доступ к своим данным с помощью BigQuery ( внешняя таблица ), с BigQuery это всегда быстрее и дешевле. Даже если запрос сложный.
  • Для всех других случаев использования Dataflow является наиболее рекомендуемым.
    • Для реального времени (с реальной потребностью в реальном времени, с метриками, вычисляемыми на лету с управлением окнами )
    • Когда вам нужно обратиться к внешнему API (ML, внешняя служба, ...)
    • Когда вам нужно погрузиться в что-то еще, кроме BigQuery (Firestore, BigTable, Cloud SQL, ...), или прочитать из источника, недоступного для BigQuery.

И да, поток данных начинается через 3 минуты и снова останавливается через 3 минуты. Это долго ... и вы платите за это бесполезное время.

Для пакетной обработки, как и для потоковой передачи, вы просто платите за количество (и размер) Compute Engine, используемого для вашего конвейера. Автоматическое масштабирование потока данных в пределах, которые вы предоставляете. Конвейер потоковой передачи не масштабируется до 0. Если у вас нет сообщений в PubSub, у вас все еще есть как минимум 1 виртуальная машина, и вы платите за нее.

...