MSSQLToGCSOperator 如何在存储桶中创建空文件

问题描述 投票:0回答:1

我们在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
bucket
1个回答
0
投票

包含 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
    )
© www.soinside.com 2019 - 2024. All rights reserved.