Python 带Kubernetes Executor的气流-错误:只读文件系统:'/气流/dags/git/test.csv

Python 带Kubernetes Executor的气流-错误:只读文件系统:'/气流/dags/git/test.csv,python,kubernetes,airflow,Python,Kubernetes,Airflow,我试图通过airflow(安装在Kubernetes内部)将表交集的结果写入csv文件,但得到的消息是csv文件是一个读取文件。脚本中是否有任何参数可以修改以使其写入结果 def update_table(): # Connecting to BigQuery client = bigquery.Client() query = """SELECT ltrim(rtrim(col1)) as col1, sum(col2) as col2

我试图通过airflow(安装在Kubernetes内部)将表交集的结果写入csv文件,但得到的消息是csv文件是一个读取文件。脚本中是否有任何参数可以修改以使其写入结果

def update_table():
    # Connecting to BigQuery
    client = bigquery.Client()
    query = """SELECT ltrim(rtrim(col1)) as col1,
                 sum(col2) as col2
                 FROM dataset.table
                 GROUP BY 1
                 ORDER BY col1 desc """
    job = client.query(query)
    df_tst = job.to_dataframe()

    # Connecting to BigQuery 
    query_mer = """SELECT distinct col1 FROM dataset.table2 """
    mer_job = client.query(query_mer)
    df_mer = mer_job.to_dataframe()

    # Comparing both tables

    nomes = df_tst.col1.tolist()
    #categorizacao_merchants
    nomes_mer = df_merchants.col1.tolist()
    lista = list(np.setdiff1d(nomes, nomes_mer))

    for x in lista:
        with open('/airflow/dags/git/test.csv','a', newline='') as f:
            writer = csv.writer(f, delimiter=';')
            writer.writerow([x])
            f.close()

with DAG('update_cat', default_args=default_args, description='Python DAG', schedule_interval='0 0 * * 0', start_date=airflow.utils.dates.days_ago(0), catchup=False) as dag:
        python_task = PythonOperator(task_id='python_task', python_callable=update_table, dag=dag)

在任务期间编写本地文件非常不方便。一般来说,任务应该从源读取并写回独立于容器/任务本身的位置,并且同一任务的多次执行不应该进一步改变源或目标数据。这是为了保留幂等性原则:使用相同输入运行的相同任务应始终生成相同的输出,并且气流不支持将数据从一个任务直接传递到另一个任务,因此您需要一些中间数据存储。

虽然您是对的,但这可能对OP没有多大帮助。展示如何正确地做这件事会很好。