血缘元数据采集开放标准:OpenLineage 集成 Integrations

OpenLineage

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

OpenLineage 集成

OpenLineage Integrations

能力矩阵

该矩阵尚未完成。

下表展示了输入面与 OpenLineage 用于收集元数据的各种机制之间的关系。并非所有机制都能为所有面收集数据,某些面仅特定于某个集成。
✔️:该机制实现了此面。
✖️:该机制未实现此面。
空白列表示尚未记录该机制是否实现此面。

机制集成收集的元数据InputDatasetFacetOutputDatasetFacetSqlJobFacetSchemaDatasetFacetDataSourceDatasetFacetDataQualityMetricsInputDatasetFacetDataQualityAssertionsDatasetFacetSourceCodeJobFacetExternalQueryRunFacetDocumentationDatasetFacetSourceCodeLocationJobFacetDocumentationJobFacetParentRunFacet
SnowflakeOperator*Airflow ExtractorLineage
Job duration
✔️✔️✔️✔️✔️✖️✖️
BigQueryOperator**Airflow ExtractorLineage
Schema details
Job duration
✔️✔️✔️
PostgresOperator*Airflow ExtractorLineage
Job duration
✔️✔️✔️✔️✔️
SqlCheckOperatorsAirflow ExtractorLineage
Data quality assertions
✔️✖️✔️✔️✔️✔️✔️
dbtdbt Project FilesLineage
Row count
Byte count
✔️
Great ExpectationsActionData quality assertions✔️✔️✔️
SparkSparkListenerSchema
Row count
Column lineage
✔️
Snowflake***Access HistoryLineage

* 使用 Rest SQL 解析器
** 使用 BigQuery API
*** 使用 Snowflake 查询日志

兼容性矩阵

该矩阵展示了每个集成已知支持的数据源,以及目标系统或框架所需的最低版本。

平台版本数据源
Apache Airflow1.10+
2.0+
PostgreSQL
MySQL
Snowflake
Amazon Athena
Amazon Redshift
Amazon SageMaker
Amazon S3 Copy and Transform
Google BigQuery
Google Cloud Storage
Great Expectations
SFTP
FTP
Apache Spark2.4+JDBC
HDFS
Google Cloud Storage
Google BigQuery
BigTable
Spanner
CloudSQL
Google BigQuery
Google BigQuery
Amazon S3
Azure Blob Storage
Azure Data Lake Gen2
Azure Synapse
dbt0.20+Snowflake
Google BigQuery

集成策略

本节需要更多细节!欢迎通过底部的编辑链接进行贡献。

与流水线集成

与流水线集成

与数据源集成

与数据源集成

入门指南

Getting Started

本指南将介绍如何快速开始使用 OpenLineage 收集 数据集(dataset)作业(job)运行(run) 元数据。我们将演示如何以 OpenLineage 事件的形式收集 运行级别(run-level) 元数据,并使用 Marquez 作为 HTTP 后端,随后通过 Marquez UI 探索血缘元数据。

前置条件

开始前,请确保已安装:

提示
在本指南中,我们将使用 Marquez 作为 OpenLineage 的 HTTP 后端,并通过 Docker 运行 HTTP 服务器。

使用 Docker 运行 Marquez

使用 Docker 启动 Marquez 最为便捷。请克隆 Marquez 源码并运行 ./docker/up.sh 脚本:

git clone https://github.com/MarquezProject/marquez.git && cd marquez

./docker/up.sh

提示
向脚本传递 --build 标志可从源码构建镜像,或传递 --tag X.Y.Z 以使用已打标签的镜像。
Apple 芯片架构的用户若遇到 Docker 平台相关错误,可能需要启用模拟并自定义 Docker 服务。可参考此指南
Marquez 后端使用端口 5432

要查看 Marquez UI 并验证其已启动,请打开 http://localhost:3000

UI 使您能够通过血缘图发现作业与其产生和使用的数据集之间的依赖关系,查看当前及历史作业运行的运行级别元数据,等等。

收集运行级别元数据

Marquez 是 OpenLineage 标准的参考实现,是一个 LF AI & DATA 孵化项目,用于收集、聚合和可视化数据生态系统的元数据。

在此示例中,您将学习如何使用 MarquezLineageAPIUI 收集数据集和作业元数据。

提交血缘事件时,首先需要定义一个唯一的 run ID,例如 0176a8c2-fe01-7439-87e6-56a1a1b4029f。建议使用 UUIDv7 格式,并且必须唯一。该 run ID 将用于随时间跟踪某个**作业(job)**的运行级别元数据,该作业可能有一个名称,如 my-job。那么,让我们开始吧!

提示
示例展示了如何通过 curl 直接调用 HTTP API 收集元数据。但您也可以使用我们的 JavaPython 客户端库快速上手。

步骤 1:启动一次运行

使用 run ID 0176a8c2-fe01-7439-87e6-56a1a1b4029fmy-job 启动运行,输入数据集为 my-input

请求
$ curl -X POST http://localhost:5000/api/v1/lineage \
  -i -H 'Content-Type: application/json' \
  -d '{
        "eventType": "START",
        "eventTime": "2020-12-28T19:52:00.001+10:00",
        "run": {
          "runId": "0176a8c2-fe01-7439-87e6-56a1a1b4029f"
        },
        "job": {
          "namespace": "my-namespace",
          "name": "my-job"
        },
        "inputs": [{
          "namespace": "my-namespace",
          "name": "my-input"
        }],
        "producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client",
        "schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/definitions/RunEvent"
      }'
响应

201 CREATED

步骤 2:完成一次运行

使用 0176a8c2-fe01-7439-87e6-56a1a1b4029f 完成 my-job 的运行,输出数据集为 my-output。我们还指定了 schema facet 以在标记运行完成前收集 my-output 的 schema。注意,由于输入数据集 my-input 已与 run ID 关联,因此无需再次指定:

请求
$ curl -X POST http://localhost:5000/api/v1/lineage \
  -i -H 'Content-Type: application/json' \
  -d '{
        "eventType": "COMPLETE",
        "eventTime": "2020-12-28T20:52:00.001+10:00",
        "run": {
          "runId": "0176a8c2-fe01-7439-87e6-56a1a1b4029f"
        },
        "job": {
          "namespace": "my-namespace",
          "name": "my-job"
        },
        "outputs": [{
          "namespace": "my-namespace",
          "name": "my-output",
          "facets": {
            "schema": {
              "_producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client",
              "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/spec/OpenLineage.json#/definitions/SchemaDatasetFacet",
              "fields": [
                { "name": "a", "type": "VARCHAR"},
                { "name": "b", "type": "VARCHAR"}
              ]
            }
          }
        }],
        "producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client",
        "schemaURL": "https://openlineage.io/spec/1-0-5/OpenLineage.json#/definitions/RunEvent"
      }'
响应

201 CREATED

查看已收集的血缘元数据

搜索作业元数据

要查看 Marquez 收集的血缘元数据,请访问 http://localhost:3000 进入 UI。然后,使用页面右上角的搜索栏搜索作业 my-job。要查看 my-job 的血缘元数据,请从下拉列表中点击该作业:

图片

查看作业元数据

在搜索结果中,您应看到作业的 namespacename,在血缘图中应看到 my-input 作为输入数据集,my-output 作为输出数据集。在图下方的作业详情页面的 RUN HISTORY 选项卡中,作业运行状态应为 COMPLETED

图片

查看输入数据集元数据

最后,点击 my-job 的输出数据集 my-output。显示的元数据包括名称、列名、数据类型等:

image

总结

在此简单示例中,我们向您展示了如何使用 Marquez 通过 Openlineage 收集数据集和作业元数据。我们还带您完成了一组 HTTP API 调用,以成功将运行标记为完成,并查看 Marquez 收集的血缘元数据。

后续步骤

反馈

您觉得本指南如何?我们非常乐意听取您的反馈,可通过 OpenLineage Slack 找到我们。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

船长Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值