摘要:•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。
点击任务名称,进入任务详情页。任务节点如下
• 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
来源:七星汽车科技人