1.说明
DataHub导入元数据方式比较灵活,主要有以下3种方式:
1、用户界面(DataHub 版本0.10.4)
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数据库连接配置,根据界面要求填入相关参数即可。

- 5.数据库配置完成后,点击next进入调度配置界面。
如果需要有计划的周期性的更新元数据,可以配置调度任务,这样可以大大减轻手工导入的工作量。

- 6、调度任务配置界面点击Next,进入配置的最后一步,在此界面填入一个名称,点击Save,即可完成配置。如果想保存后立即执行,点“Save&Run”按钮。

- 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、编写配置文件,并上传到服务器。
配置文件格式参考:https://datahubproject.io/docs/generated/ingestion/sources/mysql/#cli-based-ingestion

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