ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

DataHub元数据摄入:4步从部署到自定义属性

2026/9/13 8:01:39 拓冰建站 浏览量
DataHub元数据摄入:4步从部署到自定义属性 DataHub元数据摄入4步从部署到自定义属性【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub团队里有三个人各自维护同一张宽表的口径表结构一改没人说得清该通知谁改下游报表。DataHub用统一的元数据摄入解决这类问题把各数据源的表结构、血缘、归属自动汇聚到一个可搜索、可审计的目录里。本文按本地部署、配置摄入源、扩展元数据模型三件事推进每步都可独立验证。15分钟完成DataHub本地部署并确认服务在线先确认本机 3306、9200、9092、8080、9002 这几个端口没被占用再安装 CLI 并启动实例。python3 -m pip install --upgrade acryl-datahub datahub docker quickstart启动过程会下载 compose 配置到~/.datahub/quickstart拉取镜像并启动约 14 个容器MySQL、Elasticsearch、Kafka、GMS 服务、前端等。官方实测的资源下限是 2 核 CPU、8GB 内存Docker Desktop 记得把内存分够否则搜索容器容易起不来。启动完成后做三件事来确认服务在线datahub docker check datahub init --username datahub --password datahub datahub datapack load showcase-ecommerce打开http://localhost:9002用默认凭据 datahub/datahub 登录应能看到已加载的示例数据约 1050 个实体覆盖 Snowflake、Looker 等平台含血缘与治理信息。datapack 目前是实验性命令界面和行为可能随版本变化。为什么这样做quickstart本质是用 docker-compose 拉起一套最小可用集群——MySQL 做版本化元数据的主存储Elasticsearch 承担搜索索引Kafka 传递元数据变更事件GMS 服务统一处理读写。这套组合本地够用但不建议直接当生产用生产部署请看官方文档 docs/quickstart.md 里 Move To Production 一节。环境跑通后下一步是把它和你的真实数据库接上。写第一份摄入recipe让真实数据库进入DataHub写一个指向你数据库的 recipe 文件。以 MySQL 为例# mysql_recipe.yml source: type: mysql config: host_port: db-host:3306 username: reader password: ${MYSQL_PASSWORD} include_tables: true sink: type: datahub-rest config: server: http://localhost:8080运行摄入export MYSQL_PASSWORD你的密码 datahub ingest -c mysql_recipe.yml做完后你会看到终端打印出本次运行摄入的实体计数摘要随后执行datahub search 你的库名能列出对应 dataset 的 URN回到 UI 搜索同名字段能看到表结构、字段列表和归属信息。为什么这样做recipe 由 source从哪读、transformers途中改什么、sink写到哪里三段组成datahub-restsink 走 GMS 的 REST API 写入GMS 落库 MySQL 后同步搜索索引。source 的database_pattern、schema_pattern支持库、表、列三级过滤这是 DataHub 元数据摄入配置里最常用的一组开关完整字段说明见 metadata-ingestion/docs/sources/ 下对应平台的文档。单次摄入验证通过后把它变成常驻的定时任务。在UI里创建定时摄入源并托管凭据在 Ingestion 页创建摄入源替代手动敲 CLI。路径是Ingestion → Create source选平台模板后依次填连接信息、资产过滤、同步调度最后点Save and Run。几个关键操作点表单里多数平台提供Test Connection按钮先验证网络和凭据再保存密码等敏感值不要明文写死在 Ingestion 的Secrets页创建 secret表单的凭据字段用下拉引用调度步骤里打开定时开关并设频率cron 表达式 时区也可以跳过调度手动触发点击播放按钮触发后Last Status列会变为Running完成后变Success点状态可展开本次摄入的实体列表Run History 页保存全部历史并可下载日志⚠️ quickstart 部署下摄入任务实际跑在 datahub-actions 容器里如果报 Failed to Connect多半是网络命名空间问题——把 sink 的 server 地址改成本 compose 网络内的服务名如datahub-gms:8080而不是localhost。为什么这样做UI 表单最终会被翻译成 recipe由 datahub-actions 执行器以 Python 进程运行secret 在任务执行时由服务端解密后经内部 API 传给执行器不落盘明文。这也意味着能创建摄入源约等于能在执行器上跑代码这个权限只应发给可信的运维角色细节见 docs/ui-ingestion.md 的安全说明。目录里有了真实数据接下来解决标准字段不够用的问题。给dataset实体挂自定义属性并使其可搜索给 dataset 实体新增一个数据质量评分属性并让它进入搜索索引。分三步第 1 步定义 Aspect。新建一个 PDL 文件namespace com.example.metadata Aspect { name: dataQualityScore } record DataQualityScore { Searchable { fieldType: DOUBLE, addToFilters: true } score: double lastEvaluated: timestamp }第 2 步注册到实体。在 entity-registry.yml 里给 dataset 的 aspects 列表加上dataQualityScoreentities: - name: dataset keyAspect: datasetKey aspects: - dataQualityScore # ... 其余默认aspects保持不动第 3 步构建并部署./gradlew :metadata-models:build然后重新部署 GMS开发环境下即重启对应容器或镜像。做完后你会看到通过 API 或 UI 写入该 aspect 后数据可被读回且datahub search能按score过滤——前提是给已有数据重建索引datahub docker quickstart --restore-indices为什么这样做DataHub 是 schema-first 的entity-registry.yml 是唯一的注册入口GMS 在运行时校验这个 aspect 是否属于这个实体类型没注册就拒绝写入。Searchable决定字段如何进 Elasticsearch 索引fieldType 可选 KEYWORD、TEXT、DOUBLE 等不加它字段就只存不查。改主仓metadata-models属于 fork 路线维护成本较高更轻的做法是用 docs/modeling/extending-the-metadata-model.md 介绍的自定义模型仓库构建出独立的 wheel 包与acryl-datahub并排安装不动主仓代码。常见报错对照与修复方法卡住时先拿报错信息对照下表覆盖 quickstart 场景下最高频的几类问题。症状最常见原因修复command not found: datahubpip 用户目录不在 PATH改用python3 -m datahub ...或把~/.local/bin加进 PATHbind: address already in use3306/9200/9002 等端口被占加参数改映射端口如datahub docker quickstart --mysql-port 53306用--help查全部选项no matching manifest for linux/arm64Apple Silicon 架构未被识别datahub docker quickstart --arch m1登录报Table datahub.metadata_aspect doesnt exist数据库初始化未完成手动执行docker exec -i mysql sh -c exec mysql datahub -udatahub -pdatahub docker/mysql/init.sql在仓库目录内容器反复退出、GMS 连不上 ESDocker 分配内存不足至少分配 8GB RAM 2GB swap如果排查后仍不确定用datahub docker nuke清掉全部容器和数据重新 quickstart 是最快的还原手段动手前先datahub docker quickstart --backup留一份backup.sql。为什么这样做quickstart 的故障几乎都集中在端口、资源、初始化脚本三件事上容器编排本身很少出问题。把datahub docker check的输出和docker logs datahub-gms的最后几十行作为第一现场比翻全部容器日志快得多。你现在可以做的事打开 UI 搜索你刚接入的库名确认 schema、字段与归属信息完整用datahub get --urn urn抽查一条实体核对摄入结果和源库一致给 Ingestion 源设置每日调度明早检查 Run History 是否 Success延伸方向官方文档的 roles 与 policies 章节说明如何在保留内置 Admin/Editor/Reader 三角色的前提下用自定义策略只开放某个 domain 的编辑权限。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考