当前位置: 首页 > news >正文

血缘元数据采集开放标准:OpenLineage Integrations Apache Airflow Usage

OpenLineage

OpenLineage 是一个用于元数据和血缘采集的开放标准,专为在作业运行时动态采集数据而设计。它通过统一的命名策略定义了由作业(Job)、运行实例(Run)和数据集(Dataset) 组成的通用模型,并通过可扩展的Facets机制对这些实体进行元数据增强。
该项目是 LF AI & Data 基金会的毕业级项目,处于活跃开发阶段,欢迎社区贡献。

Apache Airflow

本页介绍的是主要用于 Airflow 版本低于 2.7 的外部集成。如果你使用的是 Airflow 2.7 及以上版本,请查阅原生 Airflow OpenLineage 提供程序文档。

后续的开发与增强将聚焦于 apache-airflow-providers-openlineage 包,而 openlineage-airflow 将主要进行缺陷修复。查看 此集成支持的所有 Airflow 版本

Airflow 是一款广泛使用的自动化工作流与调度平台,可用于编写和管理数据管线。Airflow 使用由有向无环图(DAG)任务构成的工作流。如需进一步了解 Airflow,请查看 官方文档。

Airflow 如何与 OpenLineage 协同工作?

理解复杂的 DAG 间依赖关系,并为 DAG 执行提供实时可见性可能颇具挑战。OpenLineage 与 Airflow 集成以收集 DAG 血缘元数据,使得 DAG 间依赖关系可以通过血缘图轻松维护和查看,同时还能为 DAG 的历史运行建立目录。

image
收集的 DAG 元数据可以回答以下问题:

  • DAG 为何失败?
  • 在代码变更后,DAG 运行时间为何增加?
  • DAG 的上游依赖有哪些?

如何使用此集成?

若要将 OpenLineage 接入你的 Airflow 实例,请按照 以下说明 操作。

如何为更多算子添加血缘覆盖?

OpenLineage 提供了一组 extractors,用于从算子中提取血缘信息。

若要为你的自定义算子添加血缘覆盖,请遵循 为算子添加血缘的说明。

若要为无法修改的算子添加覆盖,请遵循 添加自定义提取器的说明。

若想在单个工作流中暴露血缘信息,你还可以在 DAG 中手动注解任务。

进一步了解

  • 查看 Marquez 的 Airflow 示例,了解如何为 Airflow DAG 启用 OpenLineage 元数据收集,并使用 Marquez 排查失败的 DAG。
  • 观看 OpenLineage 与 Airflow 的数据血缘

反馈

可通过 Slack 联系我们并留下反馈!

使用 Airflow 集成

本页介绍的是主要用于 Airflow 版本低于 2.7 的外部集成。如果你使用的是 Airflow 2.7 及以上版本,请查阅原生 Airflow OpenLineage 提供程序文档。

后续的开发与增强将聚焦于 apache-airflow-providers-openlineage 包,而 openlineage-airflow 将主要进行缺陷修复。查看 此集成支持的所有 Airflow 版本

前置条件
  • Python 3.8
  • Airflow >= 2.1,<2.8

要使用 OpenLineage Airflow 集成,你需要一个正在运行的 Airflow 实例。你还需要一个兼容 OpenLineage 的 后端。

安装

安装前请查看 支持的 Airflow 版本。

要下载并安装最新版 openlineage-airflow 库,请运行:

openlineage-airflow

你也可以将 openlineage-airflow 添加到 Airflow 的 requirements.txt 中。

若要从源码安装,请运行:

python3 setup.py install
配置

接下来,指定你希望 OpenLineage 将事件发送至何处。

我们建议使用 openlineage.yml 文件配置客户端,该文件告知客户端如何连接到 OpenLineage 后端。查看具体方法。

最简单的方式(仅限 HTTP 客户端)是使用环境变量。
例如,要将 OpenLineage 事件发送到本地 Marquez 实例,请使用:

OPENLINEAGE_URL=http://localhost:5000
OPENLINEAGE_ENDPOINT=api/v1/lineage # 此为默认值,当变量未设置时可省略
OPENLINEAGE_API_KEY=secret_token    # 仅在需要认证头时设置,否则可省略

如需进行额外配置,或将事件发送到非 HTTP 服务器目标(例如 Kafka topic),请配置客户端。

注意: 如果使用的 Airflow 版本低于 2.3.0,需进行额外配置。

环境变量

除了 Python 客户端变量 外,Airflow 集成还支持以下专属环境变量。

名称描述示例
OPENLINEAGE_AIRFLOW_DISABLE_SOURCE_CODE设为 False 可防止 PythonOperator 或 BashOperator 中的可调用对象源代码被包含进 OpenLineage 事件。False
OPENLINEAGE_EXTRACTORS可选的提取器类列表(以分号分隔的字符串),用于加载自定义提取器。full.path.to.ExtractorClass;full.path.to.AnotherExtractorClass
OPENLINEAGE_NAMESPACE可选的血缘数据所属命名空间。如未指定,默认为 defaultmy_namespace
OPENLINEAGE_AIRFLOW_LOGGINGAirflow 中 OpenLineage 客户端的日志级别(Python 客户端的 OPENLINEAGE_CLIENT_LOGGING 变量在此处无效)。DEBUG

为向后兼容,openlineage-airflow 也支持通过
MARQUEZ_NAMESPACEMARQUEZ_URLMARQUEZ_API_KEY 变量进行配置,以替代标准的
OPENLINEAGE_NAMESPACEOPENLINEAGE_URLOPENLINEAGE_API_KEY
不同前缀的变量不可混用。

使用

启用后,集成将执行以下操作:

  • 在 TaskInstance 启动 时,收集每个任务的元数据。
  • 收集任务输入/输出元数据(来源、架构等)。
  • 收集任务运行级元数据(执行时间、状态、参数等)。
  • 在 TaskInstance 完成 时,同时在 Marquez 中将任务标记为完成。

支持的 Airflow 版本

本页介绍的是主要用于 Airflow 版本低于 2.7 的外部集成。如果你使用的是 Airflow 2.7 及以上版本,请查阅原生 Airflow OpenLineage 提供程序文档。

后续的开发与增强将聚焦于 apache-airflow-providers-openlineage 包,而 openlineage-airflow 将主要进行缺陷修复。查看 此集成支持的所有 Airflow 版本

支持的 Airflow 版本
Airflow 2.7+

从 Airflow 2.7.0 开始 不应 使用此包,并且在 Airflow 2.8+ 中 无法 使用。
该包设计为面向 Airflow 版本低于 2.7 的外部集成。
对于 Airflow 2.7+,请使用原生 Airflow OpenLineage 提供程序
apache-airflow-providers-openlineage

Airflow 2.3 - 2.6

注意: 支持 Airflow 2.3-2.4 的最后一个 openlineage-airflow 版本为 1.33.0

从 Airflow 2.3 开始,只要该集成已安装在 Airflow 工作节点的 Python 环境中,它会自动注册。
这意味着除了配置事件发送位置(详见 配置 章节)外,无需额外操作。

Airflow 2.1 - 2.2

注意: 支持 Airflow 2.1-2.2 的最后一个 openlineage-airflow 版本为 1.14.0

这些版本下的集成存在限制:不支持跟踪失败任务,
任务启动仅在任务结束时才被记录(基于 LineageBackend 的方法会在每个任务完成时收集该任务的所有元数据)。

为使 OpenLineage 生效,除安装 openlineage-airflow 外,还需在 airflow.cfg 中或通过环境变量 AIRFLOW__LINEAGE__BACKEND 指定 LineageBackend

openlineage.lineage_backend.OpenLineageBackend

OpenLineageBackend 不会考虑手动配置的 inlets 与 outlets。

Airflow <2.1

OpenLineage 不支持低于 Airflow 2.1 的版本。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

http://www.dtcms.com/a/354837.html

相关文章:

  • 2026届大数据毕业设计选题推荐-基于大数据景点印象服务系统 爬虫数据可视化分析
  • 【Linux】linux中线程的引出
  • 视频软解码技术详解:原理、应用与未来发展
  • 计算机网络:(poll、epoll)
  • 贴片式SD卡在北京君正与瑞芯微平台上的应用对比与实践解析
  • MCU平台化实践方案
  • DevOps篇之Jenkins实现k8s集群版本发布以及版本管理
  • 趣味学Rust基础篇(函数)
  • ABeam中国 | 中国汽车市场(5)——软件定义汽车(SDV)的智能化应用场景
  • 智能体架构的十字路口:深度剖析Block的“通用平台”与GSK的“垂直模型”
  • 设计模式:组合模式(Composite Pattern)
  • ArcGIS:如何设置地图文档的相对路径或者发布为地图包
  • 5.1 操作系统概述
  • Cesium 入门教程(十一):Camera相机功能展示
  • SplinePSF——应用于光学成像中的 PSF 建模
  • 【贪心 或 DFS - 面试题】小于n最大数
  • 记一次雪花算法 ID 精度丢失的Bug:前端接收到的 Long 被“四舍五入”了?
  • Java HTTP 请求:Unirest 使用指南及与 HttpClient 对比
  • 数据湖与数据仓库
  • 「数据获取」25年最新安徽省路网数据安徽省路网分类数据(获取方式看绑定的资源)
  • 自动化三维测量仪工业零件自动外观三维测量-中科米堆CASAIM
  • 三维视频融合驱动视频孪生创新:智汇云舟引领数字孪生产业新范式
  • Kubernetes一EFK日志架构
  • 在 Ubuntu 24.04 上安装二进制文件(逐步指南)
  • HCIA备考知识点总结:第二章华为VRP系统知识点
  • 嵌入式学习日记(36)TCP并发服务器构建——epoll
  • leetcode算法刷题的第二十天
  • 力扣18:四数之和
  • CodeSouler v2.4.0 版本更新
  • 生成式推荐模型的长序列特征:离线存储