Airflow/Databricks Job/Step Functions запускают submit; передают ds/partition параметры; ретраи оркестратора + идемпотентный overwrite; логи/metrics наружу для алертов.
Разбор
- Не держите долгий sleep внутри Spark вместо сенсора Airflow.
- Передавайте run_id для lineage.
- Ресурсные пулы кластера согласуйте с concurrency DAG.
- Separate compute для ad-hoc vs prod.
Итог
Оркестратор задаёт когда/параметры; Spark — как считать идемпотентно.