OpenLineage 调研:跨工具血缘的 LF AI 毕业标准,2,604 ⭐ 不是产品是规则

42次阅读
OpenLineage 调研:跨工具血缘的 LF AI 毕业标准,2,604 ⭐ 不是产品是规则

飞熊深度向 · 数据更新于 2026-08-17 · 一句话理解:OpenLineage 是 数据血缘的事实标准,类似 OpenAPI 在 API 领域的角色 —— 任何 ETL/ 调度 / 数仓 /BI 工具都在接它的事件,而不是用它做产品。


1. 为什么 2026 年数据治理需要 ” 血缘标准 ”

过去十年数据血缘最大的痛点:每家工具一套私有模型

  • Apache Atlas 用自己的 Type System
  • DataHub 用自己的 Entity Registry
  • OpenMetadata 用自己的 Schema
  • 各家数仓(Snowflake/BigQuery/Databricks)有自己的 ACCESS_HISTORY

结果 :你在 Snowflake 跑一个 dbt 模型,触发了 Airflow 任务,写到 BigQuery 表,被 Tableau 看板消费——这条链路上的血缘 完全断裂,因为没有共同语言。

OpenLineage 解决的是这个:定义一个统一的 Lineage 事件 schema,让任何工具都能发射、任何后端都能接收。就像 OpenAPI 让前端 / 后端不再各自解析 JSON 一样。

LF AI & Data Foundation 已正式接纳为 Graduate 项目(2024 年)—— 这是顶级基金会对其成熟度的盖章。


2. 关键数据(2026-08-17 GitHub API 实时)

维度 OpenLineage Marquez(参考实现)
Stars 2,604 2,259
Forks 513 408
Open Issues 347 249
License Apache-2.0 Apache-2.0
首次发布 2020-10 2021-08
最新版本 1.52.0(2026-07-23) 持续滚动
最近 commit 2026-08-16 2026-08-11
语言 Java 4.4M / Python 1.4M / Rust 239K / Go 133K Java + Python + JS

OpenLineage 组织下 12+ 仓库(spec / docs / sqlparser-rs / workshops / metrics / compatibility-tests 等)—— 是一个完整生态,不是单点项目。


3. OpenLineage 到底是什么

不是产品,是标准 + 库 + 生态

┌─────────────────────────────────────────────────┐
│  Pipeline Tools(生产者)│
│  Airflow / Spark / dbt / Flink / Dagster / ...   │
│  ↓ 发送 OpenLineage 事件                          │
├─────────────────────────────────────────────────┤
│  OpenLineage 标准(spec + facet)│
│  ↓ HTTP / Kafka / 文件                            │
├─────────────────────────────────────────────────┤
│  后端 Backend(消费者)│
│  Marquez / DataHub / OpenMetadata / Egeria / ... │
└─────────────────────────────────────────────────┘

三层结构

  1. 标准层 —— OpenLineage.md spec 文件 + OpenAPI 定义 + Facet 扩展机制
  2. 客户端库 —— Java / Python / Rust / Go / Scala 各一份,集成进 Pipeline 工具
  3. 生态集成 —— Airflow / Spark / dbt / Flink / Dagster 全部原生支持

关键设计

  • Run / Job / Dataset 三件套 —— 描述一次执行、一个任务、一份数据
  • Facet 扩展机制 —— 通过 facet 字段让任何工具自定义元数据(schema_version / data_quality / column_lineage 等)
  • 事件协议 —— JSON over HTTP 或 Kafka,schema 向前兼容

4. 核心数据模型

4.1 Run(执行)

{
  "run": {
    "runId": "abc-123",
    "facets": {"parent": { ...},
      "processing_engine": {"name": "spark", "version": "3.5"}
    }
  }
}

一次 Job 执行的具体实例。包含 ID、时间、父任务等。

4.2 Job(任务)

{
  "job": {
    "namespace": "airflow",
    "name": "etl_orders.daily",
    "facets": {"documentation": { "description": "Daily ETL for orders"},
      "ownership": {"owners": [{ "name": "data-team"}] }
    }
  }
}

可调度的任务定义。命名空间 + 名称 + 业务 facet。

4.3 Dataset(数据集)

{
  "dataset": {
    "namespace": "postgres://prod",
    "name": "public.orders",
    "facets": {"schema": { "fields": [{ "name": "id", "type": "BIGINT"}] },
      "dataSource": {"name": "postgres", "platform": "postgres"}
    }
  }
}

一份数据。命名空间 + 名称 + schema + 数据源。

4.4 Facet(核心创新)

Facet 是 可扩展的元数据插件。任何工具都可以定义自己的 facet:

  • schema —— 数据 schema
  • column_lineage —— 列级血缘(关键差异化)
  • data_quality —— 数据质量分数
  • lifecycle_state_change —— 数据生命周期
  • ownership —— 所有权
  • documentation —— 文档

这是 OpenLineage 比 Atlas 灵活的根本原因 —— 不绑定特定数据模型。


5. Marquez 参考实现

MarquezProject/marquez 是 OpenLineage 的 官方参考后端

  • 2,259 ⭐ / Apache-2.0 ✅
  • 提供 Web UI 展示 lineage graph
  • 支持 OpenLineage 事件收集 + 存储(PostgreSQL)
  • 提供 REST API 查询血缘
  • 同属 LF AI & Data 治理

部署模式

# docker-compose 快速启动
git clone https://github.com/MarquezProject/marquez
cd marquez
docker compose up -d

# 访问 Web UI
open http://localhost:3000

与其他后端的区别

后端 定位 关系
Marquez 纯 lineage 后端,专注 OpenLineage 官方参考实现
DataHub 一站式(catalog + 血缘 + 质量) 接收 OpenLineage 事件作为输入
OpenMetadata 一站式(catalog + 血缘 + AI) 原生支持 OpenLineage + 自家 schema
Egeria 企业级 metadata exchange 也支持 OpenLineage(兼容层)

关键洞察 :OpenLineage 是 输入 (事件源),Marquez / DataHub / OpenMetadata 是 输出(事件目的地)。


6. 集成矩阵(核心生态覆盖)

OpenLineage 最大的卖点是 生态集成广度

工具 表级血缘 列级血缘 集成方式 维护方
Apache Spark 原生 SparkListener OpenLineage
Apache Airflow OpenLineageHook OpenLineage
dbt ✅(dbt source) dbt-ol plugin OpenLineage
Apache Flink Flink integration OpenLineage
Dagster dagster-ol Dagster 团队
Snowflake Snowflake OOB OpenLineage
BigQuery BigQuery OOB OpenLineage
Databricks 第三方集成 社区
Kafka Connect kafka-connect-openlineage 社区
AWS EMR Spark Listener 兼容 AWS

Spark + Airflow + dbt + Flink 四大金刚全部原生支持 —— 这是为什么 OpenLineage 是事实标准。


7. 跟其他数据治理项目的关系

7.1 OpenLineage vs DataHub / OpenMetadata / Atlas

维度 OpenLineage DataHub OpenMetadata Atlas
本质 标准 产品 产品 产品
Lineage 模型 事件 + Facet 自家 Entity 自家 Schema Type System
元数据
数据质量 ⚠️ 弱
数据契约 ⚠️ ✅ ODCS
AI 上下文 ✅ MCP ✅ MCP
生态集成 ✅ 10+ 80+ 130+ 10+ Hadoop

7.2 互补关系

2026 年最佳实践

┌────────────────────────────────────────────────┐
│  Pipeline Tools                                 │
│  Spark / Airflow / dbt / Flink                  │
│      ↓ 发射 OpenLineage 事件                     │
├────────────────────────────────────────────────┤
│  OpenLineage(标准 + 传输)│
│      ↓ HTTP / Kafka                             │
├────────────────────────────────────────────────┤
│  后端:选一个                                     │
│  - Marquez(纯 lineage 视图)│
│  - DataHub(catalog + lineage + quality)│
│  - OpenMetadata(catalog + lineage + AI context)│
└────────────────────────────────────────────────┘

关键洞察 :OpenLineage 不是 DataHub 的竞品, 它是 DataHub 的输入。DataHub 通过接收 OpenLineage 事件来构建自己的 lineage 图。


8. 实战 3 步上手

Step 1: 部署 Marquez(参考后端)

git clone https://github.com/MarquezProject/marquez
cd marquez
docker compose up -d
# Web UI: http://localhost:3000

Step 2: 配置 Airflow 发射 OpenLineage 事件

# airflow.cfg
[openlineage]
transport = {
  "type": "http",
  "url": "http://marquez:5000/api/v1/lineage",
  "auth": {
    "type": "api_key",
    "api_key": "your-marquez-api-key"
  }
}

或者环境变量:

export OPENLINEAGE_URL=http://marquez:5000
export OPENLINEAGE_API_KEY=xxx

Step 3: 接 Spark / dbt

# Spark
spark = SparkSession.builder \
    .config("spark.sql.query.lineage.enabled", "true") \
    .config("spark.openlineage.url", "http://marquez:5000") \
    .getOrCreate()

# dbt (dbt-ol)
# packages.yml
packages:
  - package: openlineage/openlineage-dbt

9. 总结:飞熊为什么关心 OpenLineage

9.1 关键事实

  1. OpenLineage 是标准不是产品 —— 类似 OpenAPI,不跟你抢功能
  2. Apache-2.0 + LF AI & Data 毕业 —— 顶级基金会背书
  3. Marquez 是参考实现 —— 2,259 ⭐ 同样 Apache-2.0
  4. 最新版本 1.52.0(2026-07-23)—— 6 个月发布 28 次,活跃度极高
  5. 生态覆盖 10+ 主流工具 —— Spark/Airflow/dbt/Flink 全部原生

9.2 飞熊的 3 个应用场景

场景 1:AI Agent 数据上下文

– OpenLineage 事件 → Marquez / DataHub → AI Agent 查询 lineage
– 让 Agent 知道 ” 这个数据集怎么来的、能改吗 ”

场景 2:跨云数据血缘

– Snowflake + BigQuery + Databricks 同时跑
– 用 OpenLineage 统一事件 → 跨云血缘图

场景 3:dbt 项目调试

– dbt 模型出错 → OpenLineage 事件 → 立即知道上游哪个数据集坏了

9.3 选型决策

痛点 首选 备选
纯 lineage 视图 Marquez DataHub
一站式 catalog + lineage DataHub + OpenLineage OpenMetadata + OpenLineage
Hadoop 生态老仓库 Apache Atlas
已经用 OpenMetadata OpenMetadata DataHub
跨云数据血缘 OpenLineage + Marquez DataHub

9.4 License

项目 License 商用风险
OpenLineage Apache-2.0 ✅ 无风险
Marquez Apache-2.0 ✅ 无风险

飞熊专属观察 :双 Apache-2.0 是数据治理赛道 最干净的开源组合 之一,比 DataHub + OpenMetadata 更适合做底层基建。


📎 参考


本文数据基准 2026-08-17(GitHub API 实时抓取 + LF AI & Data 官网)。如需引用: [《OpenLineage 调研》](https://east196.cn/?p=354)

正文完