【开源项目】轻量元数据管理解决方案——Marquez

大家好,我是独孤风。

又到了本周的开源项目推荐。最近推荐的元数据管理项目很多,但是很多元数据管理平台的功能复杂难用。

那么有没有轻量一点的元数据管理项目呢?

今天为大家推荐的开源项目,就是一个轻量级的元数据管理工具。虽然轻量,但是元数据的收集、展示、数据血缘等功能都是支持的。

让我们一起来看看吧~

Marquez概述

今天为大家推荐的开源项目名为Marquez。这是WeWork开源的元数据管理工具,可以对元数据进行收集,聚合和可视化。

Marquez提供了开源的元数据服务,用于数据生态系统元数据的收集、聚合和可视化。通过它可以对数据集整体的产生和消费情况进行把控。

并提供数据处理全过程的数据可视化,并可以对数据集的生命周期进行集中管理。

该项目还在蓬勃发展中,目前标星数为1.5K,最新版本为三周前发布的0.43.1。主要开发语言为Java和TS。

Marquez的部署与Java项目类似,只要启动对应的Web端服务和API服务就可以了。

特别强调一下Marquez的血缘API非常的简洁,可以轻松建立数据血缘依赖关系,这可以为数据质量等原因分析提供保证。

可在**大数据流动后台回复"Marquez"**获取安装包,源代码与学习资料。

功能演示

请参考大数据流动视频号的功能演示:

如何安装?

可以docker快速安装,需要至少满足如下版本。

拉取项目

bash 复制代码
$ git clone https://github.com/MarquezProject/marquez && cd marquez

可以用下面的命令启动

python 复制代码
$ ./docker/up.sh --seed

请通过访问http://localhost:3000浏览到 UI 。然后,使用页面右上角的搜索栏搜索该职位etl_delivery_7_days。要查看 的沿袭元数据etl_delivery_7_days,请从下拉列表中单击该作业:

您应该看到作业namespacename和数据集,input并且output作业运行标记为COMPLETED

最后,单击 的输出数据public.delivery_7_daysetl_delivery_7_days。您应该看到数据集nameschemadescription

API的使用

项目启动后就可以调用API了。

下面是一个简单的例子,首先我们要启动一个血缘事件。

复制代码
$ 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": "d46e465b-d358-4d32-83d4-df660ff614dd"
        },
        "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"
      }'

随后完成该任务。

复制代码
$ 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": "d46e465b-d358-4d32-83d4-df660ff614dd"
        },
        "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的基本用法。

Marquez提供元数据采集的一个标准方案,目前支持Spark,Airflow的表级别和列级别的数据血缘收集。

而Flink暂时只支持表级别的血缘收集。

相信Marquez未来会支持越来越多的数据源,让我们一起期待一下吧~

相关推荐
带娃的IT创业者2 天前
拆掉那堵墙:LibrePods 如何让 AirPods 在 Android 上重获新生
android·开源项目·airpods·librepods·生态解锁
charlie1145141913 天前
IMX6ULL WM8960 的移植——前置介绍
开发语言·c++·开源项目·嵌入式linux
charlie1145141913 天前
Cinux是如何管理进程的 —— 上下文与调度
开发语言·c++·操作系统·开源项目
在水一缸9 天前
PGSimCity:当数据库内核变成一座可以漫步的城市
数据库·postgresql·可视化·开源项目·数据库内核·pgsimcity·技术科普
在水一缸10 天前
KOReader:当开源精神遇上电子墨水屏,一场阅读体验的静默革命
开源·开源项目·电子墨水屏·极客·kindle·koreader·阅读体验
charlie11451419111 天前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目
在水一缸12 天前
当 AI 编码助手遇上 Rust:深入解析 Zerostack 的极简哲学与实战应用
rust·系统架构·开源项目·轻量化·ai编码助手·zerostack
charlie11451419115 天前
RK3506B — SD启动移植,上电零输入到 shell
驱动开发·开源项目
带娃的IT创业者16 天前
原生体验的回归:深入解析 TREK —— 专为 Apple Silicon 打造的轻量级容器方案
macos·docker·虚拟化·开源项目·容器化·apple silicon·trek
charlie11451419116 天前
现代C++工程实践 WeakPtr 实战(三):WeakPtrFactory 与「最后成员」惯用法
开发语言·c++·开源项目·现代c++