
飞熊深度向 · 数据更新于 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 / ... │
└─────────────────────────────────────────────────┘
三层结构:
- 标准层 ——
OpenLineage.mdspec 文件 + OpenAPI 定义 + Facet 扩展机制 - 客户端库 —— Java / Python / Rust / Go / Scala 各一份,集成进 Pipeline 工具
- 生态集成 —— 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—— 数据 schemacolumn_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 关键事实
- OpenLineage 是标准不是产品 —— 类似 OpenAPI,不跟你抢功能
- Apache-2.0 + LF AI & Data 毕业 —— 顶级基金会背书
- Marquez 是参考实现 —— 2,259 ⭐ 同样 Apache-2.0
- 最新版本 1.52.0(2026-07-23)—— 6 个月发布 28 次,活跃度极高
- 生态覆盖 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 更适合做底层基建。
📎 参考
- GitHub: OpenLineage/OpenLineage · MarquezProject/marquez
- 官网: openlineage.io
- 已有 WP 调研: 《数据治理横评:6 大开源项目》
- LF AI & Data: lfaidata.foundation/projects/openlineage
本文数据基准 2026-08-17(GitHub API 实时抓取 + LF AI & Data 官网)。如需引用: [《OpenLineage 调研》](https://east196.cn/?p=354)