当前位置: 首页 > news >正文

开源数据发现平台:Amundsen Metadata Service 元数据服务

在这里插入图片描述

Amundsen 是一个数据发现和元数据引擎,旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。目前,它通过索引数据资源(表格、仪表板、数据流等)并基于使用模式(例如,查询频率高的表格会优先于查询频率低的表格)提供页面排名式的搜索功能来实现这一目标。您可以将其视为数据版的 Google 搜索。该项目以挪威探险家罗尔德·阿蒙森 (Roald Amundsen) 的名字命名,他是第一个发现南极的人。

Amundsen Metadata Service

Amundsen 元数据服务

Amundsen 元数据服务提供 RESTful API,负责提供和更新元数据,例如表和列的描述信息以及标签。该服务可使用 Neo4j、Apache Atlas、AWS Neptune 或 MySQL RDS 作为持久层。

有关 Amundsen 及其他服务的信息,请参阅此 README.md。另请查看我们的快速入门指南(使用模拟数据启动 Amundsen)及架构概述。

要求

  • Python >= 3.8

文档

  • https://www.amundsen.io/amundsen/

从发行版启动元数据服务

$ venv_path=[虚拟环境路径]
$ python3 -m venv $venv_path
$ source $venv_path/bin/activate
$ pip3 install amundsen-metadata
$ python3 metadata_service/metadata_wsgi.py# 在另一个终端验证返回 HTTP/1.0 200 OK
$ curl -v http://localhost:5002/healthcheck

从源代码启动元数据服务

$ git clone https://github.com/amundsen-io/amundsenmetadatalibrary.git
$ cd amundsenmetadatalibrary
$ python3 -m venv venv
$ source venv/bin/activate
$ pip3 install -e ".[all]" .
$ python3 metadata_service/metadata_wsgi.py# 在另一个终端验证返回 HTTP/1.0 200 OK
$ curl -v http://localhost:5002/healthcheck

通过 Docker 启动服务

$ docker pull amundsendev/amundsen-metadata:latest
$ docker run -p 5002:5002 amundsendev/amundsen-metadata
# 替代方案:生产环境使用 Gunicorn(见下方官网链接)
$ ## docker run -p 5002:5002 amundsendev/amundsen-metadata gunicorn --bind 0.0.0.0:5002 metadata_service.metadata_wsgi# 在另一个终端验证返回 HTTP/1.0 200 OK
$ curl -v http://localhost:5002/healthcheck

生产环境

默认情况下,Flask 使用 Werkzeug 开发服务器。生产环境请使用生产级 Web 服务器如 Gunicorn。

pip install gunicorn
gunicorn metadata_service.metadata_wsgi

Gunicorn 配置文档。

非本地环境配置

默认情况下,元数据服务使用 LocalConfig(查找运行在 localhost 的 Neo4j)。如需使用不同终端节点,需创建适合的 Config 类,并通过环境变量引用:METADATA_SVC_CONFIG_MODULE_CLASS

例如:为生产环境创建不同配置时,可继承 Config 类创建 ProdConfig,并通过环境变量传递。假设类名为 ProdConfig 且位于 metadata_service.config 模块,则设置如下:

METADATA_SVC_CONFIG_MODULE_CLASS=metadata_service.config.ProdConfig

此方式使元数据服务在生产环境使用生产配置。配置加载机制的更多信息参考 Flask 文档。

Apache Atlas

Amundsen 元数据服务可使用 Apache Atlas 作为后端。相比 Neo4j 的优势包括:Atlas 提供多服务插件(如 Apache Hive/Spark)支持基于推送的更新,并通过 Apache Ranger 设置元数据访问/编辑策略。

Apache Atlas 是数据治理服务,提供管理界面便于访问元数据(主要面向管理员而非终端用户,建议终端用户使用 Amundsen UI)。

Atlas 是目前 Amundsen 中唯一同时支持推送/拉取元数据的代理:

  • 推送模式:利用 Atlas Hive Hook(作为事件监听器与 Hive Metastore 协同运行),将 Hive Metastore 事件转为 Atlas 实体并推送至 Kafka 主题,由 Atlas 内部处理
  • 拉取模式:利用 Amundsen Databuilder 与 Atlas 的集成,通过 Databuilder 提取器(如 PostgresMetadataExtractor)收集外部系统元数据,转换为 Amundsen 可消费格式发送至 Atlas

使用 Atlas 作为元数据服务后端时,需按前述方法创建 Config 并包含以下配置:

PROXY_CLIENT = PROXY_CLIENTS['ATLAS'] # 或环境变量 PROXY_CLIENT='ATLAS'
PROXY_PORT = 21000          # 或环境变量 PROXY_PORT
PROXY_USER = 'atlasuser'    # 或环境变量 CREDENTIALS_PROXY_USER
PROXY_PASSWORD = 'password' # 或环境变量 CREDENTIALS_PROXY_PASSWORD

通过 Docker 启动 Atlas 服务时,请确保 DNS(或 docker-compose)中配置了 atlasserver

docker run -p 5002:5002 --env PROXY_CLIENT=ATLAS --env PROXY_PORT=21000 --env PROXY_HOST=atlasserver --env CREDENTIALS_PROXY_USER=atlasuser --env CREDENTIALS_PROXY_PASSWORD=password amundsen-metadata:latest

注意

Apache Atlas 支持细粒度访问控制,但 Amundsen 暂未实现此功能。

开发者指南

代码风格

  • PEP 8:遵循 Python 代码风格指南
  • 类型提示:使用类型标注增强可读性

API 文档

我们通过 Flasgger 提供符合 OpenApi 3.0.2 规范的 Swagger 文档。新增/修改 API 时请同步更新文档。本地运行应用后访问 localhost:5002/apidocs/ 查看文档(目前仅支持本地配置)。

代码结构

请查阅代码结构文档了解 Amundsen 元数据服务的模块组织方式。

往返测试

往返测试是新功能——通过实现 abstract_proxy_tests 和在 base_proxy 中添加测试端点,可针对实际数据存储验证代理代码。默认不运行这些测试,需通过 --roundtrip-[proxy] 参数触发(注意:需要完整配置的后端环境):

python -m pytest --roundtrip-neptune .

配置

大部分配置通过Flask Config Class设置。

徽章系统

要为资源添加徽章,需先将徽章名称和类别的组合添加到 WHITELIST_BADGES Config Class中。

示例:

WHITELIST_BADGES: List[Badge] = [Badge(badge_name='beta',category='table_status')]

完成后,用户可通过以下命令添加白名单中的徽章:

curl -X PUT https://{amundsen metadata url}/table/"{table key}"/badge/{badge_name}?category={category}

用户详情方法 可选

此方法用于从第三方或自定义系统获取用户详情。该自定义函数接收user_id参数,返回符合UserSchema定义的字段字典。

示例:

def get_user_details(user_id):user_info = {'email': 'test@email.com','user_id': user_id,'first_name': 'Firstname','last_name': 'Lastname','full_name': 'Firstname Lastname',}return user_infoUSER_DETAIL_METHOD = get_user_details

统计格式规范 可选

此变量用于重新格式化用户界面显示的统计信息。键为统计项名称,值为包含以下可选键的字典:

  • new_name - 重命名统计项(未提供时使用原名称)
  • format - 数值格式化方式(未提供时使用原始格式)
  • drop - 是否在界面隐藏该统计项(未提供时默认显示)

示例(使用deeque库时):

STATISTICS_FORMAT_SPEC = {'stdDev': dict(new_name='标准差', format='{:,.2f}'),'mean': dict(format='{:,.2f}'),'maximum': dict(format='{:,.2f}'),'minimum': dict(format='{:,.2f}'),'completeness': dict(format='{:.2%}'),'approximateNumDistinctValues': dict(new_name='唯一值数量', format='{:,.0f}', ),'sum': dict(drop=True)
}

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

http://www.dtcms.com/a/335727.html

相关文章:

  • VS Code配置MinGW64编译SQLite3库
  • uniappx 安卓端本地打包的一些总结
  • Sklearn 机器学习 邮件文本分类 计数器向量化文本
  • 学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
  • 论文投稿时,如何绘制插入无失真的图
  • 44.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成认证(三)
  • 第七十九:AI的“急诊科医生”:模型失效(Loss Explode)的排查技巧——从“炸弹”到“稳定”的训练之路!
  • scikit-learn 中的均方误差 (MSE) 和 R² 评分指标
  • React 第七十节 Router中matchRoutes的使用详解及注意事项
  • 学习一下B树和B+树
  • map和join的用法
  • K8S集群环境搭建
  • [激光原理与应用-291]:理论 - 波动光学 - 相关光与不相干光:光的干涉不是随随便便就能产生的,需要满足严格的条件方能产生光的干涉(条纹)
  • 【科研绘图系列】R语言绘制探究浮游植物成熟阶段的光合作用与溶解性有机碳
  • OpenCV 图像处理核心技术:边界填充、算术运算与滤波处理实战
  • 在 Element UI 的 el-table 中实现某行标红并显示删除线
  • Leaflet赋能:WebGIS视角下的省域区县天气可视化实战攻略
  • Python训练营打卡Day35-复习日
  • 数据赋能(396)——大数据——抽象原则
  • 奈飞工厂无广告纯净版官方下载,最新官网入口
  • 常用的SQL语句
  • 使用vscode的task.json来自动执行make命令,而不直接使用终端
  • java八股文-(spring cloud)微服务篇-参考回答
  • 校园综合数据分析可视化大屏 -Vue纯前端静态页面项目
  • JavaScript字符串详解
  • 2025:AI狂飙下的焦虑与追问
  • 【数据分享】黑龙江省黑土区富锦市土地利用数据
  • 【C#补全计划】多线程
  • GitLab CI/CD、Jenkins与GitHub Actions在Kubernetes环境中的方案对比分析
  • 基于SpringBoot的在线拍卖系统,免费附源码