OpenLineage Airflow 集成¶
OpenLineage 是一个用于数据血缘(Data Lineage)收集和分析的开放框架。其核心是一个可扩展的规范,系统可以利用它来与血缘元数据进行互操作。查阅 OpenLineage 文档。
快速入门¶
要为您的 Airflow 实例集成 OpenLineage,请参阅使用 OpenLineage 集成。
要为 Airflow Operator 实现 OpenLineage 支持,请参阅在 Operator 中实现 OpenLineage。
它能解决什么问题?¶
收集到的元数据可以回答以下问题:
为什么特定的数据转换失败了?
哪些上游源输入到特定的数据集?
哪些下游流程依赖于这个特定的数据集?
我的数据是否及时?
我能否识别出数据处理管道中的瓶颈?
最新的代码更改如何影响了数据处理时间?
我如何追溯报告中数据不准确的原因?
数据隐私和合规性要求如何在数据的整个生命周期中得到管理?
是否存在可以优化或移除的冗余数据流程?
这份关键报告存在哪些数据依赖关系?
理解复杂的跨 DAG 依赖关系并提供 DAG 执行的最新运行时可见性可能具有挑战性。OpenLineage 与 Airflow 集成,收集 DAG 血缘元数据,以便可以轻松维护跨 DAG 依赖关系并通过血缘图进行查看,同时还保留 DAG 历史运行的目录。
对于将接收事件的 OpenLineage 后端,您可以使用 Marquez
内部工作原理?¶
OpenLineage 集成实现了AirflowPlugin。这使得它可以在 Airflow 启动时被发现并注册Airflow Listener。
当发生特定事件时(如 DAG 或 TaskInstance
启动、完成或失败),OpenLineageListener
会被 Airflow 调用。对于 DAG,监听器在 Airflow Scheduler 中运行。对于 TaskInstance
,监听器在 Airflow Worker 上运行。
当 TaskInstance
监听器方法被调用时,OpenLineageListener
会构建元数据,例如事件的唯一 run_id
和事件时间。然后,它会尝试从 Airflow Operator 中提取元数据,如Extraction precedence 中所述。