簡體   English   中英

Apache Airflow 傳輸多個文件

[英]Apache Airflow transferring multiple files

我對 Airflow 很陌生,所以這可能是一個微不足道的問題。 我在運行 Airflow 的服務器上有一個目錄,其中包含多個文件,我想將它們傳輸到遠程服務器。 我能夠很好地傳輸單個文件,但我如何合並邏輯以通過單個任務傳輸目錄中的所有文件,或者創建一個動態任務,在其中我在 for 循環中傳入文件名。

這是我傳輸單個文件的簡約 dag。

import os
from airflow import DAG
from datetime import datetime
from airflow.providers.sftp.operators.sftp import SFTPOperator, SFTPOperation
from airflow.configuration import conf


fileTest = 'test.zip'

conf = {
    "start_date": datetime(2022, 6, 1),
    "catchup": False,
    "schedule_interval": "@daily",
    "dag_id": "KPO_test"
}


# instantiate the DAG
with DAG(**conf) as dag:
 
    task_push_tr_cr_files = SFTPOperator(
        task_id=f'put_{fileTest}',
        ssh_conn_id=SFTP_CONNECTION_ID,
        local_filepath=f"{SFTP_SOURCE_TR_CURL_PATH}{fileTest}",
        remote_filepath=f"{SFTP_DESTINATION_TR_CURL_PATH}{fileTest}",
        operation=SFTPOperation.PUT,
        create_intermediate_dirs=True,
        dag=dag,
)
task_push_tr_cr_files

創建任務組是我一直在尋找的解決方案。

...

from airflow.utils.task_group import TaskGroup

...

t0 = DummyOperator(task_id='start')

with TaskGroup(group_id='tr_curl_grp') as tg1:
    for task_name in tr_curl_log_files:
        fileName = task_name
        task_name = f"file: {task_name}"
        task_name = SFTPOperator(
            task_id=task_name,
            ssh_conn_id=SFTP_CONNECTION_ID,
            local_filepath=SFTP_SOURCE_PING_PATH + fileName,
            remote_filepath=SFTP_DESTINATION_PING_PATH + fileName,
            operation=SFTPOperation.PUT,
            create_intermediate_dirs=True,
            dag=dag,
        )

...

t0 >> tg1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM