【開源項目】輕量元數據管理解決方案——Marquez

大家好,我是獨孤風。

又到了本週的開源項目推薦。最近推薦的元數據管理項目很多,但是很多元數據管理平臺的功能複雜難用。
那麼有沒有輕量一點的元數據管理項目呢?
今天爲大家推薦的開源項目,就是一個輕量級的元數據管理工具。雖然輕量,但是元數據的收集、展示、數據血緣等功能都是支持的。
讓我們一起來看看吧~

Marquez概述

今天爲大家推薦的開源項目名爲Marquez。這是WeWork開源的元數據管理工具,可以對元數據進行收集,聚合和可視化。
Marquez提供了開源的元數據服務,用於數據生態系統元數據的收集、聚合和可視化。通過它可以對數據集整體的產生和消費情況進行把控。
並提供數據處理全過程的數據可視化,並可以對數據集的生命週期進行集中管理。

該項目還在蓬勃發展中,目前標星數爲1.5K,最新版本爲三週前發佈的0.43.1。主要開發語言爲Java和TS。
Marquez的部署與Java項目類似,只要啓動對應的Web端服務和API服務就可以了。
特別強調一下Marquez的血緣API非常的簡潔,可以輕鬆建立數據血緣依賴關係,這可以爲數據質量等原因分析提供保證。

可在大數據流動後臺回覆“Marquez”獲取安裝包,源代碼與學習資料。

功能演示

請參考大數據流動視頻號的功能演示:

如何安裝?

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

拉取項目

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

可以用下面的命令啓動

$ ./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未來會支持越來越多的數據源,讓我們一起期待一下吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章