Назад к вопросам
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 только ссылки на эти данные.