#airflow
#воздушный поток
Вопрос:
Я создаю облачный SQL (MS SQL Server) для интеграции с BigQuery, используя воздушный поток на GCP (Composer). Я настроил облачный SQL-прокси в кластере GKE, который работает нормально, ошибок нет:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: cloud-sql-proxy
name: cloud-sql-proxy
namespace: cloud-sql-to-bq
spec:
replicas: 1
selector:
matchLabels:
run: cloud-sql-proxy
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
run: cloud-sql-proxy
spec:
containers:
- command:
- /cloud_sql_proxy
- -instances=[INSTANCE-NAME]=tcp:0.0.0.0:1433
image: b.gcr.io/cloudsql-docker/gce-proxy:latest
imagePullPolicy: IfNotPresent
name: airflow-sqlproxy
ports:
- containerPort: 1433
protocol: TCP
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
nodeSelector:
cloud.google.com/gke-nodepool: default-pool
restartPolicy: Always
Моя база данных:
dag = DAG('mssql-export-demo', catchup=False, default_args=default_args)
cloud_storage_bucket_name = 'mssql-export-test'
export_customers = MsSqlToGoogleCloudStorageOperator(
task_id='export_analysis',
sql='SELECT * FROM vwAnalysis;',
bucket=cloud_storage_bucket_name,
filename='data/customers/export.json',
schema_filename='schemas/export.json',
mssql_conn_id='cloud_sql_proxy_conn',
dag=dag
)
Я также создал соединение в Airflow, чтобы указать на cloud_sql_proxy_conn.
Когда я запускаю DAG, я получаю следующую ошибку:
[2020-11-28 01:59:20,555] {taskinstance.py:1153} ERROR - Connection to the database failed for an unknown reason.
Traceback (most recent call last)
File "src/pymssql.pyx", line 636, in pymssql.connec
File "src/_mssql.pyx", line 1964, in _mssql.connec
File "src/_mssql.pyx", line 683, in _mssql.MSSQLConnection.__init_
_mssql.MSSQLDriverException: Connection to the database failed for an unknown reason
Другого сообщения об ошибке нет, что затрудняет отладку. У кого-нибудь есть опыт работы с MS SQL в Cloud SQL и Composer, чтобы помочь мне разобраться в этом?
Ответ №1:
Airflow теперь предоставляет CloudSqlInstanceExportOperator, что означает, что нет необходимости настраивать облачный SQL-прокси в GKE.