Sobes.tech
Назад к вопросам
Middle
7

Как передавать данные между задачами в Airflow?

Компании, где спрашивали
FOM GROUP

Ответ от нейросети

sobes.tech AI

В Apache Airflow для передачи данных между задачами обычно используют XCom (Cross-Communication). XCom позволяет одной задаче «пушить» (отправлять) небольшие данные, которые затем могут быть «пулены» (получены) другой задачей.

Пример использования XCom:

from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime

def push_function(**kwargs):
    # Отправляем данные в XCom
    kwargs['ti'].xcom_push(key='sample_key', value='данные для передачи')

def pull_function(**kwargs):
    # Получаем данные из XCom
    data = kwargs['ti'].xcom_pull(key='sample_key', task_ids='push_task')
    print(f'Полученные данные: {data}')

with DAG('example_xcom_dag', start_date=datetime(2023,1,1), schedule_interval='@daily') as dag:
    push_task = PythonOperator(
        task_id='push_task',
        python_callable=push_function,
        provide_context=True
    )

    pull_task = PythonOperator(
        task_id='pull_task',
        python_callable=pull_function,
        provide_context=True
    )

    push_task >> pull_task

Важно помнить, что XCom предназначен для передачи небольших объемов данных (например, строк, чисел, небольших словарей). Для больших данных лучше использовать внешние хранилища (S3, базы данных и т.п.) и передавать в XCom только ссылки на эти данные.