Openmetadata&Doris血缘管理(字段级别)

Openmetadata&Doris血缘管理

Openmetadata版本:1.3.1

发现、协作和获取正确的数据的平台。 通过端到端元数据管理解决方案释放数据资产的价值,该解决方案包括数据发现、治理、数据质量、可观察性和人员协作。

核心能力:

  1. 元数据管理

  2. 数据血缘解析(字段级别)

  3. 数据表协作办公

  4. 数据质量分析及测试

优点:

  1. UI非常舒适且支持中文(多语言)

  2. 操作简单,功能丰富

  3. 安装简单,依赖组件比datahub更少,功能却更多

  4. 社区活跃,更新速度快

缺点:

  1. 国内博客数量少,可查询文档少,非常依赖官网文档,Slack和Github

  2. 官网不支持中文

  3. 与airflow完美适配,dolphin暂时还没适配

数据导入

支持页面一键导入元数据,对与BigQuery等数据源,支持页面一键解析血缘。

当然doris,mysql等仅仅支持页面一键导入元数据,并不能同时导入血缘。解析血缘需要使用python3 SDK进行手动一键导入。

doris_db.gif

元数据提取:导入数据源的元数据(表名,表描述,字段名,字段描述)

分析器提取:分析表的row count,样例数据,空值数量,字段重复数量等

dbt提取:从dbt模型提取血缘

image.png

运行可能会失败,但是元数据可以导入成功

导入表元数据预览

image.png

数据查询

数据查询因为底层使用的Elasticsearch,支持非常强大的全文索引,以及各种筛选,逻辑表达式筛选等

search.gif

表级别的元数据浏览

image.png

数据血缘

使用python3 SDK导入DORIS血缘

安装python3 openmetadata SDK

# openmetadata SDK install ps:安装版本需要和SDK版本完全一致 om=1.3.1 sdk=1.3.1
python3 -m pip install "openmetadata-ingestion~=1.3.1"

launcher.py 启动脚本

import os
import glob
from typing import Callable
from create_metadata import open_metadata
from sql_lineage_parser import parse

# client config
hostPort = "http://node-124:8585/api"
# get token from bots
jwtToken: str = (
    "token"
)
metadata = None

# doris params
service_name = "node-125-doris"
database_name = "default"
schema_name = "schema"

# sql path
sql_path = "project/sql"


def main():
    global metadata
    metadata = open_metadata(hostPort, jwtToken)
    # lineage parse
    scan_file_parse(sql_path, parse_sql)

def scan_file_parse(dir: str, parser: Callable):
    sql_files = glob.glob(os.path.join(dir, "**/*.sql"), recursive=True)
    for sql_file in sql_files:
        with open(sql_file, "r", encoding="utf-8") as file:
            sql = file.read()
            print(f"start parse {sql_file}")
            parser(sql)

def parse_sql(sql: str):
    parse(metadata, service_name, database_name, schema_name, sql)

if __name__ == "__main__":
    main()

create_metadata.py

from metadata.ingestion.ometa.ometa_api import OpenMetadata
from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import (
    OpenMetadataConnection,
    AuthProvider,
)
from metadata.generated.schema.security.client.openMetadataJWTClientConfig import (
    OpenMetadataJWTClientConfig,
)


def open_metadata(hostPort: str, jwt_token: str):
    server_config = OpenMetadataConnection(
        hostPort=hostPort,
        authProvider=AuthProvider.openmetadata,
        securityConfig=OpenMetadataJWTClientConfig(jwtToken=jwt_token),
    )
    metadata = OpenMetadata(server_config)
    return metadata


# test client
def main():
    hostPort = "http://openmetadata:8585/api"
    jwtToken: str = (
        "token"
    )

    metadata = open_metadata(hostPort, jwtToken)
    # check client health
    health_check_result = metadata.health_check()

    # return True if health
    print("Health check result:", health_check_result)


if __name__ == "__main__":
    main()

sql_lineage_parser.py

from metadata.ingestion.ometa.ometa_api import OpenMetadata
from metadata.generated.schema.entity.services.databaseService import DatabaseService


def parse(
    metadata: OpenMetadata,
    service_name: str,
    db_name: str,
    schema_name: str,
    sql: str,
):

    database_service: DatabaseService = metadata.get_by_name(
        entity=DatabaseService, fqn=service_name
    )

    result = metadata.add_lineage_by_query(
        database_service=database_service,
        database_name=db_name,
        schema_name=schema_name,
        timeout=200,  # timeout in seconds
        sql=sql,  # your sql query
    )

导入效果图

lineage1.png

协同办公(评论留言)

OM支持非常多在数据库,数据表,字段留下痕迹的方式。包括但不限于,评论,标签,公告,描述,向xx申请等等。

可以在元数据的各种位置,留下想要的标记或者说补充说明,当然因为ES的关系,也支持全文索引。

非常适合,将一些复杂的业务逻辑和业务系统的工程师了解后记录在系统内。这将会大大减少沟通成本。

3.png

评论等行为会在对应模块和首页活动信息流中,进行展示

2.png

数据质量测试

列分析页面,可以直接看到每个列数据的null%,唯一%等,有助于一键预览

6.png

支持配置多种表级别,字段级别的测试用例,并且配置成定时执行。

举例:某一字段,只能为枚举A,B,C。可以通过测试用例进行质量的监控。或者一些数量值,监控数值应该在某个范围内等等。

4.png

安装

#Docker (version 20.10.0 or greater) 
docker --version
#Docker Compose (version v2.1.1 or greater) 
docker compose version
#install openmetadata-docker
mkdir openmetadata-docker && cd openmetadata-docker
wget https://github.com/open-metadata/OpenMetadata/releases/download/1.3.1-release/docker-compose.yml
# use mysql ("docker compose -f docker-compose-postgres.yml up --detach" is for postgres)
docker compose -f docker-compose.yml up --detach

# if finish
docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED          STATUS                    PORTS                                                            NAMES
470cc8149826   openmetadata/server:1.3.1                             "./openmetadata-star…"   45 seconds ago   Up 43 seconds             3306/tcp, 9200/tcp, 9300/tcp, 0.0.0.0:8585-8586->8585-8586/tcp   openmetadata_server
63578aacbff5   openmetadata/ingestion:1.3.1                           "./ingestion_depende…"   45 seconds ago   Up 43 seconds             0.0.0.0:8080->8080/tcp                                           openmetadata_ingestion
9f5ee8334f4b   docker.elastic.co/elasticsearch/elasticsearch:7.16.3   "/tini -- /usr/local…"   45 seconds ago   Up 44 seconds             0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp                   openmetadata_elasticsearch
08947ab3424b   openmetadata/db:1.3.1                                  "/entrypoint.sh mysq…"   45 seconds ago   Up 44 seconds (healthy)   3306/tcp, 33060-33061/tcp  

细节参考官网或者联系在下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容