Apache Airflow XCom с нуля: как передавать данные между задачами DAG (пошаговый разбор)
Автор: Корсаков о Data
Загружено: 2025-12-18
Просмотров: 108
Описание:
🔥 Хочешь понять, как передавать данные между задачами в Apache Airflow, не запутаться в XCom’ах и не превратить metastore в свалку?
В этом видео разберём XCom в Airflow с нуля на живых примерах DAG’ов: как пушить и пуллить значения, когда XCom — это удобно, а когда это прямой путь к боли и антипаттернам.
Ссылки:
Менторство/консультации по Data Engineering — https://korsak0v.notion.site/Data-Eng...
TG-канал — https://t.me/DataLikeQWERTY
Instagram — / i__korsakov
Habr — https://habr.com/ru/users/k0rsakov/pu...
🔍 Что в видео:
🧠 Что такое XCom в Apache Airflow и зачем вообще передавать данные между задачами DAG
⚙️ Простой DAG simple_push_xcom_values: как создаётся XCom «по умолчанию» и где его посмотреть в Airflow UI
🔎 Где живут XCom’ы:
— вкладка XCom в веб-интерфейсе Airflow
— таблица xcom в метасторе через DBeaver
🧪 DAG simple_dag:
— что такое task_instance (ti) в контексте задачи
— почему лучше явно использовать task_instance, а не полагаться на «магический» ti
— как TaskInstance связан с текущим DAGRun и состоянием задач
— почему стандартный Debug в IDE не даёт полноценного TaskInstance и как заглянуть в «кишки» XCom’ов через код
🔄 DAG simple_communications_between_tasks:
— как одна задача пушит значение через xcom_push, а другая забирает его через xcom_pull
— чем отличается ключ XCom от имени таски и зачем задавать свой key
— как по логам увидеть, что одна задача ничего не возвращает, а другая всё равно получает значение из XCom
🎯 DAG simple_communications_between_tasks_with_target_values:
— функция-таска get_common_date как единый источник общей даты для всего пайплайна
— как написать таску, которая пушит данные в XCom и потом забирать их по имени функции / таски
— пример context.get("task_instance").xcom_pull("get_common_date") и разбор, что здесь реально происходит под капотом
🚫 Почему не стоит злоупотреблять XCom:
— сложно дебажить и тестировать такой код, особенно в проде
— сильная зависимость от Airflow и метастора: без них логика не воспроизводится
— метастор засоряется XCom-записями, значения живут «вечно», если их не чистить
— как быстро растут объёмы записей при десятках / сотнях DAG’ов и частых запусках
— где посмотреть ограничения по размеру XCom (файл xcom.py в исходниках Airflow)
— когда стоит переходить на Custom XCom Backend и внешние хранилища
✅ Когда XCom действительно полезен:
— передача статусов и сигналов между задачами (доступность API, состояние БД, флаги проверок)
— отметка этапов пайплайна как «выполнено», чтобы повысить прозрачность выполнения DAG
— хранение небольших служебных значений, а не данных уровня DWH
💣 Антипаттерны при работе с XCom:
— передавать параметры и данные между разными DAG’ами через XCom
— складывать большие объёмы данных в XCom вместо нормального хранилища
— использовать XCom как универсальную БД «на все случаи жизни»
— игнорировать чистку XCom и рост метастора, пока он не начнёт замедлять Airflow
🗂️ GitHub репозиторий с кодом:
https://github.com/k0rsakov/pet_proje...
✉️ Вопросы, обучение, консультации по Data Engineering и Apache Airflow — пиши в личку:
https://korsak0v.notion.site/Data-Eng...
💡 В конце видео — практические рекомендации:
когда XCom — хороший инструмент для обмена статусами и небольшими значениями между задачами,
а когда лучше спроектировать пайплайн так, чтобы данные жили во внешнем хранилище, а Airflow отвечал только за оркестрацию.
Таймкоды:
00:00 – Начало
00:15 – Про инфраструктуру
01:24 – Простой DAG по отправке значений в XCom
04:11 – Что такое TaskInstance / ti
06:49 – Простой пример взаимодействия с XCom внутри DAG
11:04 – Боевой пример применения XCom внутри DAG для работы с API
16:48 – Рекомендации
#apacheairflow #airflow #xcom #airflowxcom #dag #apacheairflowtutorial #airflowtutorial #airflowforbeginners #dataengineering #etl #elt #dwh #python #dataengineer #junior #middle #pipeline
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: