DataHub中导入mysql元数据

1.说明

DataHub导入元数据方式比较灵活,主要有以下3种方式:

1、用户界面(DataHub 版本0.8.25+)

2、命令行

3、Rest API (提供Java/python sdk) 适合无固定格式的文件型元数据或者其他DataHub不支持的source。

本文以mysql数据库为例,介绍用户界面和命令行2种方式下如何导入元数据。

2.准备

首先要安装依赖环境,需要在DataHub所在服务器执行以下命令:

pip3 install 'acryl-datahub[datahub-rest]' //安装接收器
pip3 install 'acryl-datahub[mysql]'//安装mysql插件

3.通过用户界面导入

  • 1、在DataHub菜单栏点击“Ingestion”,进入元数据导入功能模块。
  • 2、选择Sources选项卡,点击 Create new source,创建新的元数据导入。
  • 3、可以看到支持多种source,此处选择MySQL。
  • 4、配置mysql数据库连接配置,已经给出了模板,只需要填入相关参数即可。

以上配置需要注意以下几点:


a、配置出现的${MYSQL_USERNAME}、${MYSQL_PASSWORD} 是一个secret,可在Secrets tab中创建。因为在实际生产项目中,数据库用户名和密码这种敏感的配置值需要保密,应该从普通视图中隐藏。secret是加密的命名值,并存储在 DataHub 的存储层中。

b.对于profiling配置

source: 
    config:
        profiling:
            enabled: false

此配置决定是否要启用 SQL 的分析器,如果启用会大大减慢导入速度,一般默认关闭。

c.对于sink配置

sink: 
    type: datahub-rest 
    config: 
        server: "http://47.114.113.67:9002/api/gms"
        # Add a secret in secrets Tab
        token: "${GMS_TOKEN}"

默认不需要token,需要把token删掉,server改成http://{你的实际ip}:8080

  • 5.数据库配置完成后,点击next进入调度配置界面。

此步骤不是必须,可以跳过。调度任务才有cron表达式的方式,如果对此表达式不熟练,可以借助生成工具生成表达式:https://www.bejson.com/othertools/cron/

如果需要有计划的周期性的更新元数据,可以配置调度任务,这样可以大大减轻手工导入的工作量。

  • 6、调度任务配置界面点击Skip或Next,进入配置的最后一步,在此界面填入一个名称,点击Done,即可完成配置。
  • 7、配置完成后,返回主界面可以看到多了一条source记录,可以点击EDIT修改配置,点击EXECUTE可以执行元数据导入。
  • 8、点击EXECUTE后,导入任务会立即执行。当前如果配置了调度任务,达到调度条件后也会自动触发导入任务。Last Status会显示最后一个导入任务的执行状态。
  • 9.点击每条source开头的+,可以展开查看source对应的执行记录。

如果 Status为 Running,表示正在执行导入,需要等待,界面导入一般比命令行导入要慢,需要耐心等待几分钟。

如果 Status为 Succeeded 表示导入成功,回到DataHub首页,可以看到Mysql对应图标,如下图所示:

如果 Status为 Failed表示导入失败,需要点击DATEILS,查看详细日志定位原因,等修改后再重新导入。

在国内首次导入一般都会报错:ConnectionRefusedError: [Errno 111] Connection refused。

原因:界面上导入元数据的程序实在docker容器内执行,docker默认是没有安装DataHub CLI的,因此执行导入时会首先下载安装依赖环境,由于要访问境外网站,会产生网络连接错误。添加国内镜像,可以解决。

1、进入docker容器内部: docker exec -it -u root 容器ID /bin/sh

2、在/etc/apk/repositories内添加两个国内的镜像地址

$ vi /etc/apk/repositories
http://mirrors.ustc.edu.cn/alpine/v3.5/main
http://mirrors.ustc.edu.cn/alpine/v3.5/community

4.通过命令行导入

命令行导入只需要两步:

  • 1、编写配置文件,并上传到服务器。

配置内容跟界面上的一致,只需要保存为后缀为yaml的文本文件即可,文件编码是UTF-8。

  • 2、运行配置文件
datahub ingest -c /home/datahub/mysql.yaml