Воздушный поток экспортирует все таблицы базы данных postgres в BigQuery - PullRequest
4 голосов
/ 30 января 2020

В настоящее время я использую Airflow PostgresToGoogleCloudStorageOperator и GoogleCloudStorageToBigQueryOperator для экспорта каждой таблицы из моей Postgres БД (размещенной на AWS RDS) в BigQuery. Это работает, но у меня есть 75 таблиц, поэтому Airflow создает 75 * 2 рабочих мест. Поскольку я новичок в Airflow, я не знаю, хорошая ли это практика.

В любом случае, я бы хотел найти способ экспортировать все таблицы одновременно (pg_dump?) В GCS, а затем импортировать их в BigQuery.

Ответы [ 2 ]

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

Это действительно вопрос мнения, но я думаю, что хорошо иметь работу с 72 x 2 задачами. Похоже, эта работа будет разовой или нечастой? Бонусные баллы, если вы используете YAML-файл для определения таблиц и ваш DAG смотрит на YAML-файл, чтобы получить список таблиц для экспорта.

Если бы вы часто запускали что-то, то я думаю, что было бы лучше использовать BashOperator и pg_dump, как вы и предлагали, поскольку Airflow может планироваться довольно много времени после того, как другие будут выполнены. Вам нужно провести некоторое тестирование с параллелизмом Airflow и интервалом планировщика (возможно, с некоторыми другими параметрами конфигурации Airflow), чтобы запустить его эффективно.

0 голосов
/ 31 января 2020

Если ваш экземпляр Postgres размещен в Google Cloud SQL:

Вы можете опробовать новую функцию бета-версии Google Cloud Облако SQL федеративные запросы , в которой вы создаете ресурс соединения для Postgres в проекте BigQuery, и вы можете использовать соединение в методе EXTERNAL_QUERY, который возвращает ссылку на таблицу BigQuery для требуемой таблицы Postgres.

Это немного медленно ( данные копируются из Postgres в BigQuery), но вы можете материализовать результаты соединения в таблицу, используя поток воздуха (BigQueryOperator с параметром destination_table), и тогда, когда вы будете запрашивать таблицу назначения, производительность должна быть как минимум хорошей как в Postgres.

Будет ли это работать, даже при этом вам нужно будет материализовать все таблицы из postgres вручную / с использованием некоторого сценария, который повторяет таблицы postgres.

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