DataHub中导入PostgreSQL元数据

1.说明

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

1、用户界面(DataHub 版本0.10.4)

2、命令行

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

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

2.准备

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

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

3.通过用户界面导入

  • 1、在DataHub菜单栏点击“Ingestion”,进入元数据导入功能模块。
  • 2、选择Sources选项卡,点击 Create new source,创建新的元数据导入。
  • 3、可以看到支持多种source,此处选择Postgres。
  • 4、配置数据库连接配置,根据界面要求填入相关参数即可。
  • 5.数据库配置完成后,点击next进入调度配置界面。

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

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

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

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

如果 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/postgres/#cli-based-ingestion

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