大家好,我是獨孤風。
又到了本週的開源項目推薦。最近推薦的元數據管理項目很多,但是很多元數據管理平臺的功能複雜難用。
那麼有沒有輕量一點的元數據管理項目呢?
今天爲大家推薦的開源項目,就是一個輕量級的元數據管理工具。雖然輕量,但是元數據的收集、展示、數據血緣等功能都是支持的。
讓我們一起來看看吧~
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
,請從下拉列表中單擊該作業:
您應該看到作業namespace
、name
和數據集,input
並且output
作業運行標記爲COMPLETED
:
最後,單擊 的輸出數據public.delivery_7_days
集etl_delivery_7_days
。您應該看到數據集name
、schema
和description
:
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未來會支持越來越多的數據源,讓我們一起期待一下吧~