我们在GCP云上升级了composer(1.19.13)和aiflow(2.3.3)版本。 在我们之前的版本中,如果查询不返回任何数据,则会由 MSSQLToGCSOperator 创建一个空文件。但是现在,当查询没有返回数据时,GCP 存储桶中没有创建文件(空文件),并且在以下任务中出现找不到文件的错误。
我尝试这个代码:
mssql_to_gcs = MSSQLToGCSOperator(
task_id='MYSQL_TO_GCS_{0}'.format(TABLE_NAME),
mssql_conn_id='con_mssql_dba_prd',
gcp_conn_id='google_cloud_storage_default',
sql='select_{0}.sql'.format(TABLE_NAME),
bucket=SOURCE_BUCKET,
filename='composer/{0}/gcp_{0}{1}.json'.format(TABLE_NAME, DATE_FORMAT),
dag=dag
)
using this operator:
from airflow.providers.google.cloud.transfers.mssql_to_gcs import MSSQLToGCSOperator
包含 SQL 到 GCS 运算符的 write_on_empty 参数并设置为 True。现在默认值是 False。
https://github.com/apache/airflow/issues/28806
例如:
mssql_to_gcs = MSSQLToGCSOperator(
task_id='MYSQL_TO_GCS_{0}'.format(TABLE_NAME),
mssql_conn_id='con_mssql_dba_prd',
gcp_conn_id='google_cloud_storage_default',
sql='select_{0}.sql'.format(TABLE_NAME),
bucket=SOURCE_BUCKET,
write_on_empty=True,
filename='composer/{0}/gcp_{0}{1}.json'.format(TABLE_NAME,
DATE_FORMAT),
dag=dag
)