Вопрос проверяет понимание встроенного механизма обмена данными в Airflow и его ограничений.
XCom — это механизм передачи небольших данных между задачами Airflow. Он позволяет одной задаче сохранить значение, а другой — прочитать его. XCom хранится в metadata database. Обычно его используют для передачи идентификаторов, флагов или путей к данным. Для больших данных XCom не подходит.
XCom (cross-communication) — это стандартный способ обмена данными между задачами внутри одного DAG Run.
XCom — это механизм Airflow для передачи небольших значений между задачами через metadata database.
Процесс выглядит так:
Задача выполняется.
Она сохраняет значение через xcom_push.
Другая задача читает его через xcom_pull.
Важно:
XCom привязан к task_id и dag_run;
данные сериализуются и сохраняются в БД.
Некоторые операторы:
автоматически кладут результат в XCom;
например, PythonOperator может вернуть значение.
Пример:
def calculate():
return 10
Возвращаемое значение станет XCom.
XCom хорошо подходит для:
передачи ID записей;
передачи дат и флагов;
передачи путей к файлам;
передачи небольших конфигураций.
По умолчанию:
XCom хранится в metadata database;
участвует в бэкапах и миграциях.
Это делает его надёжным, но не быстрым для больших данных.
используйте короткие и понятные ключи;
не злоупотребляйте XCom;
очищайте старые DAG Run при необходимости.
XCom — удобный механизм для передачи небольших данных и метаданных между задачами. Он упрощает построение workflow, но не заменяет полноценные хранилища данных.