DataHub GraphQL 实战:3 个任务搞定元数据查询与变更
【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub
想在代码里查一张表归谁管、上下游是什么,总不能靠在页面间来回翻吧。DataHub GraphQL 是 DataHub 的图查询接口,元数据查询、数据血缘、变更描述都能在一个端点里完成。读到这里,你能在本地跑通一个查询、改掉一条元数据。
先搞懂 4 个名词
| 名词 | 一句话解释 |
|---|---|
| URN | 每个元数据实体的唯一标识,如urn:li:dataset:(urn:li:dataPlatform:kafka,my_topic,PROD) |
| Dataset | 表、Topic 等数据资产在 DataHub 里的实体,查询和变更的主对象 |
| 血缘 Lineage | 实体之间的上下游关系,可查也可写 |
| GMS | 后台元数据服务,存储实体和 Aspect,GraphQL 就是它上面的查询层 |
| GraphiQL | 浏览器里的交互查询界面,边写边看结果 |
和 REST 的区别只有一句话:GraphQL 让你精确指定要哪些字段,多要少要都自己定。
三步跑起来:clone、启动、打开 Playground
下面这段命令会克隆仓库、用 Docker 起一套完整环境,最后告诉你打开哪个地址:
git clone https://gitcode.com/GitHub_Trending/da/datahub cd datahub docker compose -f docker/profiles/docker-compose.yml up -d- 克隆仓库到本地。
- 执行 quickstart 的 docker compose 命令,等容器全部变成 green。
- 浏览器打开
http://localhost:9002/api/graphiql,这就是 Playground。
注意:quickstart 不会预置业务数据,建议先用 ingestion 同步任意一个源(或手动推几条 MCE),这样下面查询时才有东西可看。
任务一:查出这张表归谁管
用这条查询取回数据集的基本信息和全部负责人:
{ dataset(urn: "urn:li:dataset:(urn:li:dataPlatform:kafka,my_topic,PROD)") { urn name platform { name } owners { owners { urn displayName } } } }跑完你会看到返回的 owners 列表,这就是这张表的责任人;如果列表为空,说明没人认领。
任务二:摸清它的上下游
这条血缘查询沿 incoming 方向拉取所有上游实体:
{ dataset(urn: "urn:li:dataset:(urn:li:dataPlatform:kafka,my_topic,PROD)") { lineage(input: { direction: INCOMING, start: 0, count: 20 }) { relationships { source { urn } relationshipType } } } }跑完每条 relationship 的source.urn就是一个上游节点,改direction为OUTGOING就能看下游。
任务三:改一句描述、顺带搜一个词
先用 mutation 把这张表的描述改掉:
mutation { updateDataset( urn: "urn:li:dataset:(urn:li:dataPlatform:kafka,my_topic,PROD)" input: { editableProperties: { description: "订单实时 Topic,由风控组维护,SLA 5 分钟" } } ) { urn } }返回 urn 且没有 error,说明已经写进去了;刷新页面里的 Dataset 详情就能看到新描述。这种变更完全可以封装成脚本定期跑,比如批量给无主表打标记。
搜索也是一样的套路:search(input: { type: DATASET, query: "order", start: 0, count: 10 })就能跨表找关键词,用法和查询基本一致。
避坑与提速清单
- 只取需要的字段,返回体越小解析越快
- 批量变更用
updateDatasets,别循环单条发请求 - 常用字段组合抽成 fragment 复用
- 高频读请求在客户端做本地缓存
- 血缘查询带
start/count分页,别一次拉全图
整套 schema、解析器和变更逻辑都在 datahub-graphql-core/ 里,写查询前拿不准字段就去查 docs/api/graphql/ 里的 getting-started,照着官方文档改比硬猜字段名快得多。
【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考