Apache Airflow XCom с нуля: как передавать данные между задачами DAG (пошаговый разбор)

🔥 Хочешь понять, как передавать данные между задачами в Apache Airflow, не запутаться в XCom’ах и не превратить metastore в свалку? В этом видео разберём XCom в Airflow с нуля на живых примерах DAG’ов: как пушить и пуллить значения, когда XCom — это удобно, а когда это прямой путь к боли и антипаттернам. Ссылки: Менторство/консультации по Data Engineering — https://korsak0v.notion.site/Data-Engineer-185c62fdf79345eb9da9928356884ea0 TG-канал — https://t.me/DataLikeQWERTY Instagram — https://www.instagram.com/i__korsakov/ Habr — https://habr.com/ru/users/k0rsakov/publications/articles/ 🔍 Что в видео: 🧠 Что такое 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_project_how_to_use_xcom_in_airflow ✉️ Вопросы, обучение, консультации по Data Engineering и Apache Airflow — пиши в личку: https://korsak0v.notion.site/Data-Engineer-185c62fdf79345eb9da9928356884ea0 💡 В конце видео — практические рекомендации: когда 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

Иконка канала Железный Тариф
6 подписчиков
12+
день назад
12+
день назад

🔥 Хочешь понять, как передавать данные между задачами в Apache Airflow, не запутаться в XCom’ах и не превратить metastore в свалку? В этом видео разберём XCom в Airflow с нуля на живых примерах DAG’ов: как пушить и пуллить значения, когда XCom — это удобно, а когда это прямой путь к боли и антипаттернам. Ссылки: Менторство/консультации по Data Engineering — https://korsak0v.notion.site/Data-Engineer-185c62fdf79345eb9da9928356884ea0 TG-канал — https://t.me/DataLikeQWERTY Instagram — https://www.instagram.com/i__korsakov/ Habr — https://habr.com/ru/users/k0rsakov/publications/articles/ 🔍 Что в видео: 🧠 Что такое 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_project_how_to_use_xcom_in_airflow ✉️ Вопросы, обучение, консультации по Data Engineering и Apache Airflow — пиши в личку: https://korsak0v.notion.site/Data-Engineer-185c62fdf79345eb9da9928356884ea0 💡 В конце видео — практические рекомендации: когда 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

, чтобы оставлять комментарии