🔹 Планирование ETL: расписания и зависимости 🔹 Как запускать ETL-пайплайн по расписанию и учитывать зависимости? 🔸 Суть: нужны регулярные запуски, чтобы данные были свежими, и контроль зависимостей, чтобы задачи не перекрывались и не приводили к неконсистентности данных. Без этого — дубли, гонки и неполные загрузки.
🔸 cron — это расписание по времени. Пример: 0 2 * * * запускает в 02:00. Подходит для простой периодичности, но cron не знает о порядке задач и не управляет retry.
🔸 DAG (Directed Acyclic Graph — направленный ацикличный граф) моделирует зависимости между задачами. Airflow использует DAGы: он ставит задачи в очередь, следит за состоянием, делает ретраи и сенсоры, умеет backfill.
from airflow import DAG from airflow.operators.bash import BashOperator from datetime import datetime
with DAG('etl', start_date=datetime(2023,1,1), schedule_interval='0 2 * * *') as dag: extract = BashOperator(task_id='extract', bash_command='echo extract') transform = BashOperator(task_id='transform', bash_command='echo transform') load = BashOperator(task_id='load', bash_command='echo load') extract >> transform >> load
🔸 Практика: для простых одношаговых задач — cron; для pipeline с зависимостями — Airflow/DAG; задавайте catchup=False и max_active_runs=1, чтобы избежать накладок.
📚 cron для простого расписания, DAG+Airflow для контроля зависимостей и надёжности.
➡️ Мы в Telegram - Сетке - Дзен Буду рад вашей реакции здесь⬇️
В этом посте были ссылки, но мы их удалили по правилам Сетки