Spark流水线+Gravitino+Marquez数据血缘采集

B站影视 韩国电影 2025-06-08 23:18 2

摘要:•OpenLineage是一个开放标准和框架,用于跨工具、平台和系统捕获数据血缘信息。• 它定义了通用的数据血缘模型和API,允许不同的数据处理工具(如ETL、调度器、数据仓库)以标准化格式生成血缘元数据。• 由Linux基金会托管,社区驱动,支持广泛的集成。

OpenLineage 是一个开放标准框架,用于跨工具、平台和系统捕获数据血缘信息。

• 它定义了通用的数据血缘模型和API,允许不同的数据处理工具(如ETL、调度器、数据仓库)以标准化格式生成血缘元数据。

• 由Linux基金会托管,社区驱动,支持广泛的集成。

标准化元数据收集:通过统一的规范(基于JSON Schema)描述数据血缘,包括作业(Job)、数据集(Dataset)和运行(Run)等实体。

跨工具集成:支持与Airflow、Spark、dbt、Great Expectations等流行数据工具的集成。

可扩展性:允许用户自定义提取器(Extractors)或适配器来兼容其他工具。

典型应用场景

Marquez 是OpenLineage的参考实现,是一个开源元数据服务,专为数据血缘和元数据管理设计。

• 由WeWork团队最初开发,现由社区维护,与OpenLineage深度集成。

• 提供Web UI和API,用于存储、查询和可视化血缘信息。

元数据存储:持久化存储OpenLineage格式的血缘数据(使用PostgreSQL或兼容的数据库)。

血缘可视化:通过Web界面展示数据集、作业和依赖关系的图谱。

API支持:提供REST API供其他系统访问或写入元数据。

与OpenLineage生态集成:自动接收来自支持OpenLineage的工具(如Airflow)的血缘事件。

API服务:处理血缘事件的摄入和查询。

Web UI:交互式查看血缘关系。

后端数据库:存储元数据。

如果需要进一步了解部署或集成细节,可以参考它们的官方文档:

• OpenLineage官网

• Marquez GitHub

Gravitino血缘事件采集后,默认是输出到日志,如果需要处理,可以实现org.apache.gravitino.lineage.sink.LineageSink进行扩展。

本文便实现此接口,通过http接口将血缘事件发送到Marquez,进行血缘的存储和展示。

在gravitino.conf中添加以下配置

其中gravitino.lineage.openlineage.http.url填写的是Marquez地址

gravitino.lineage.openlineage.http.endpoint填写的是Marquez接收血缘事件的接口。

如需开启血缘采集功能,首先需要下载 Gravitino OpenLineage 插件 jar 并将其放置到 Spark 的类路径中。

(gravitino-openlineage-plugins/spark-plugin at main · datastrato/gravitino-openlineage-plugins)

入口:通过顶部菜单栏选择 任务开发,或通过快捷入口 快速创建任务

任务类型:选择 SparkPipeline。

3.3 配置任务

点击任务名称,进入任务详情页。任务节点如下

• Gravatino节点:配置Gravatino连接信息,并设置enableLinage为true,开起血缘采集

SQLQuery节点:执行sql查询语句。跨catalog实现联邦查询

• PostgresqlWrite节点:将查询结果写入到Postgres。

• 点击 运行 按钮启动任务。

3.5 查看血缘

3.6 数据查询

参考链接:

[1] https://github.com/datastrato/gravitino/

[2] https://datastrato.ai/blog/gravitino-unified-metadata-lake/

[3] Apache Gravitino Spark connector | Apache Gravitino

来源:七星汽车科技人

相关推荐