开源数据发现平台:Amundsen 快速上手指南

在这里插入图片描述

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

1.1 Amundsen简介

1.1.1 核心定位:开源数据发现平台

  • 官方定义

    “Amundsen is a metadata driven application for improving the productivity of data analysts, data scientists and engineers when interacting with data.”
    (来源:Amundsen GitHub)

    • 关键解析
      • 元数据驱动:以元数据(数据描述、血缘、使用记录等)为核心构建功能。
      • 提升数据生产力:解决数据从业者(分析师/科学家/工程师)的“数据发现难”问题。
  • 产品本质
    • 非数据存储或处理引擎,而是 数据目录(Data Catalog) —— 用于集中管理、索引和探索数据资产。

1.1.2 核心价值:数据民主化与协作

  • 元数据管理
    • 统一视图:聚合分散的元数据(表结构、血缘、所有权),形成可搜索的目录。
    • 减少重复工作:避免用户手动维护电子表格或离线文档。
  • 数据民主化
    • 降低数据发现门槛:通过关键词搜索、过滤、排名和个性化推荐,让非技术用户快速定位数据。
    • 协作闭环:支持用户添加描述、标签、所有权声明、常见查询片段(如GitHub的协作模式)。

1.1.3 起源与设计原则

  • 诞生背景(源自Lyft工程博客):
    • Lyft为解决内部数据资产混乱问题于2019年开源,目前由 LF AI & Data Foundation 托管,仍保持 非商业化产品 治理模式。
  • 设计原则(官方架构文档):
    1. 简单优先:UI轻量易用(类Google搜索界面)。
    2. 可扩展性:微服务架构,支持通过 Databuilder 框架自定义元数据采集任务,支持 Elasticsearch/OpenSearch、PostgreSQL/MySQL、AWS Neptune、Neo4j 作为后端存储。
    3. 社区驱动:由用户贡献迭代,核心维护者来自 Airbnb、Apple、Dremio、Stripe 等组织。

1.1.4 与其他工具对比

工具核心差异点
Atlas与 Hadoop 生态深度耦合,偏重安全与治理;Amundsen 轻量且 UI 友好。
DataHub原生支持流式元数据(Kafka)、GraphQL API;Amundsen 更早专注“搜索体验优化”。
OpenMetadata同属 Apache 开源目录,侧重元数据事件流与治理工作流;Amundsen 专注于搜索与协作体验。

1.2 学习目标与范围

1.2.1 适用人群与学习路径

目标读者

  • 数据从业者(分析师/工程师/科学家)
  • 希望零成本快速体验开源数据目录的初学者
  • 需理解元数据管理核心概念的技术爱好者

学习路径设计

本地环境搭建
核心概念解析
基础功能实操
自定义数据源实践
端到端应用
  1. 渐进式实践:从 Docker Compose 环境启动 → 元数据注入 → 搜索/浏览 → 血缘协作
  2. 最小化技术栈:仅需基础 Python/Docker Desktop/Docker Compose 知识

1.2.2 您将掌握的技能

能力维度具体成果
环境管理在个人电脑运行 Amundsen 全套服务(Frontend+Metadata+Search+Neo4j)
概念理解解析元数据模型/搜索排名原理/血缘协作逻辑
核心操作完成数据摄取 → 关键词搜索 → 表详情解读 → 书签添加的全流程
扩展实践将本地 SQLite 数据库注入为可发现的数据资产

1.2.3 内容边界说明

为保障学习效率,本指南:

  • 专注:个人本地环境(非生产部署)
  • 简化:使用官方默认配置 docker-amundsen.yml(非企业级优化)
  • 开放:所有代码/配置源自 Amundsen GitHub
  • 不包含:云服务集成、大规模集群运维、商业定制化案例

1.3 官方资源概览

1.3.1 核心学习资源

GitHub 主仓库

  • 地址:https://github.com/amundsen-io/amundsen
  • 内容:
    • 源代码(Frontend / Metadata / Search / Databuilder)
    • Docker 配置(docker-compose.yml)

官方文档站点

  • 地址:https://www.amundsen.io/amundsen/
  • 关键文档:
    • 安装指南(Installation)
      图片
    • 架构说明(Architecture)
      图片
    • Databuilder 用法(Data Ingestion)
      图片

社区支持渠道

  • Slack 工作组:amundsen-workspace
  • 问题讨论区:GitHub Issues

1.3.2 学习前提知识

基础工具能力

  • Docker 与 Docker Compose:
    • 容器创建/启停命令(docker run, docker-compose up, docker-compose down
    • 日志查看(docker logs
  • Python 基础:
    • 理解 Python 脚本结构(如 Databuilder 示例)
    • 包安装(pip install

核心概念认知

  • 元数据基础:表(Table)、列(Column)、血缘(Lineage)定义
  • 搜索引擎基础:Elasticsearch 索引概念(非运维级)

A. 术语表

元数据 (Metadata)

定义:描述数据的数据(data about data)
Amundsen上下文

  • 表结构(名称/列/类型/列描述)
  • 数据血缘关系
  • 表使用统计信息(查询次数/活跃用户)
  • 数据质量评分(SLA、Freshness、Completeness)

“Metadata is information about the data assets”
—— Amundsen Architecture Doc

元数据摄取 (Metadata Ingestion)

定义:从数据源提取元数据并加载到目录系统的过程
技术流程

提取
转换
加载
索引
数据源
Databuilder
清洗/增强
Neo4j
Elasticsearch

实现方式

  • 批处理作业(Airflow DAG 定时执行)
  • 流式摄取(Kafka Connect / Flink CDC)
  • 支持 CSV / SQL / RDBMS / Hive / Glue / dbt / Iceberg 等源

血缘追踪 (Lineage Tracking)

定义:记录数据从源头到终端的完整流动路径
Amundsen实现

# Neo4j 血缘关系模型
(:Table)-[:UPSTREAM]->(:Table)
(:Table)-[:COLUMN_UPSTREAM]->(:Column)
(:Dashboard)-[:DASHBOARD_UPSTREAM]->(:Table)

核心价值

  • 影响分析(上游变更影响范围)
  • 故障溯源(数据异常定位)
  • 合规审计(数据来源证明)
  • 成本归因(下游资源消耗追踪)

数据目录 (Data Catalog)

定义:集中化管理企业数据资产的元数据存储库
核心能力

  • 数据发现(全文搜索 / 过滤器 / 推荐)
  • 元数据管理(描述 / 标签 / 所有权 / 生命周期)
  • 协作功能(书签 / 评论 / 通知 / 审批)
  • 权限控制(表级 / 列级 / 行级)

“A metadata driven data discovery and catalog platform”
—— Amundsen Homepage

数据民主化 (Data Democratization)

定义:使非技术人员能够自主发现和使用数据
实现机制

  • 类 Google 搜索界面(智能提示 / 分面搜索)
  • 业务友好的元数据描述(术语表集成)
  • 可视化血缘关系图(列级血缘 / 分区血缘)
  • 数据预览(采样 / 统计摘要)
  • 自然语言查询(与 LLM 集成)

效果衡量

  • 数据团队查询需求下降
  • 业务用户自助分析比例上升
  • 数据资产利用率提升

BM25 排序 (BM25 Ranking)

定义:基于 BM25 概率模型的搜索结果评分算法
公式

score(D,Q)=∑i=1nIDF(qi)⋅f(qi,D)(k1+1)f(qi,D)+k1(1−b+b⋅∣D∣avgdl)\text{score}(D,Q)=\sum_{i=1}^{n}\text{IDF}(q_i)\cdot\frac{f(q_i,D)\,(k_1+1)}{f(q_i,D)+k_1\left(1-b+b\cdot\dfrac{|D|}{\text{avgdl}}\right)} score(D,Q)=i=1nIDF(qi)f(qi,D)+k1(1b+bavgdlD)f(qi,D)(k1+1)

其中

  • IDF(qi)=ln⁡⁣(N−n(qi)+0.5n(qi)+0.5)\text{IDF}(q_i)=\ln\!\left(\dfrac{N-n(q_i)+0.5}{n(q_i)+0.5}\right)IDF(qi)=ln(n(qi)+0.5Nn(qi)+0.5)
  • f(qi,D)f(q_i,D)f(qi,D):词项 qiq_iqi 在文档 DDD 中的词频
  • ∣D∣|D|D:文档 DDD 的长度(词项总数)
  • avgdl\text{avgdl}avgdl:整个索引的平均文档长度
  • k1=1.2k_1=1.2k1=1.2b=0.75b=0.75b=0.75 为 Elasticsearch/OpenSearch 的默认值 。

Amundsen应用

  • 检索引擎:Elasticsearch / OpenSearch 默认 BM25
  • 字段权重:表名(10×) > 描述(5×) > 列名(1×)
  • 业务因子:黄金表 +15% 权重、最近更新 +10% 权重

可扩展架构 (Extensible Architecture)

定义:通过插件化设计支持功能扩展
Amundsen实现点

# 自定义提取器示例
from amundsen_common.models.table import TableMetadata
from databuilder.extractor.base_extractor import Extractorclass CustomExtractor(Extractor):def extract(self) -> TableMetadata:# 实现特定逻辑return table_metadata

扩展方向

  • 新数据源支持(Flink / Trino / Snowflake)
  • 存储后端替换(PostgreSQL / Amazon Neptune)
  • 分析引擎集成(Superset / Mode / Tableau)
  • 身份认证插件(Okta / Auth0 / Azure AD)

元数据模型 (Metadata Model)

定义:描述元数据实体及关系的抽象结构
Amundsen核心实体

TableColumnUserTagBadgeWatermarkDashboardDashboardChartcontainsownsupstreamtagged_byhas_badgehas_watermarkcontainsreferences

设计原则

  • 全局唯一键标识资源(格式:database://cluster.schema/table)
  • 轻量化关系(无属性边,属性存节点)
  • Schema Registry 保证向后兼容

协作式元数据 (Collaborative Metadata)

定义:通过用户协作生成的元数据
典型形式

  • 表/列描述(Markdown 支持 / 富文本)
  • 数据质量标记(SLA、异常、弃用)
  • 使用建议注释(查询示例 / 最佳实践)
  • 业务术语(与 DataHub Business Glossary 对齐)

Amundsen实现

  • 类 Wiki 的编辑系统(版本历史 / 差异对比)
  • 变更通知(Slack / Teams / Email)
  • 审批工作流(Owner 审核 / Steward 审批)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918920.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【密码学实战】国密SM2算法介绍及加解密/签名代码实现示例

引言 在信息安全领域,密码算法是数据保护的核心基石。2010 年,中国国家密码管理局发布了 SM2 椭圆曲线公钥密码算法,作为国产密码标准的核心成员,它凭借高效安全的特性,逐步替代 RSA 等国际算法,广泛应用于…

QT开发中如何加载第三方dll文件

文章目录🔧 一、隐式加载(静态链接)操作步骤:⚙️ 二、显式加载(动态链接,推荐使用QLibrary)操作步骤:💻 三、直接调用Windows API(仅Windows)⚠️…

后端学习资料 持续更新中

数据库: 该网址包含:图解MySql, 看明白谁也问不倒你~ 图解计算机网络、操作系统、计算机组成、MySQL、Redis,让天下没有难懂的八股文!https://xiaolincoding.com/

《嵌入式Linux应用编程(六):并发编程基础:多进程exec函数族及多线程基础》

一、exec函数族在一个进程里面执行另一个文件本质&#xff1a;将文本区的指令代码替换成exec要执行的指令#include <unistd.h>参数&#xff1a;path:要执行的可执行文件的路径和名称arg:执行该可执行文件时需要传递的参数NULL&#xff1a;参数传递结束标志 返回值&#x…

【121页PPT】智慧方案智慧综合体智能化设计方案(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/2501_92808859/91654007 资料解读&#xff1a;【121页PPT】智慧方案智慧综合体智能化设计方案 详细资料请看本解读文章的最后内容 一、项目概述与智能化总…

Linux网络基础(一)

目录 计算机网络背景 网络发展 初识 "协议" 网络协议初识 协议分层 软件分层的好处 打电话例子 OSI七层模型 TCP/IP五层(或四层)模型 参考资料 再识协议 为什么要有 TCP/IP 协议&#xff1f; 什么是 TCP/IP 协议&#xff1f; TCP/IP 协议与操作系统的关系(宏观上&…

MySQL多表查询案例

多表查询本文介绍了多表查询中的表关系概念和操作方法。主要内容包括&#xff1a;1.三种表关系类型&#xff08;一对多、多对多、一对一&#xff09;及其实现方式&#xff1b;2.多表查询的四种连接方式&#xff08;内连接、左外连接、右外连接、自连接&#xff09;及语法&#…

Dify 从入门到精通(第 36/100 篇):Dify 的插件生态扩展

Dify 从入门到精通&#xff08;第 36/100 篇&#xff09;&#xff1a;Dify 的插件生态扩展 Dify 入门到精通系列文章目录 第一篇《Dify 究竟是什么&#xff1f;真能开启低代码 AI 应用开发的未来&#xff1f;》介绍了 Dify 的定位与优势第二篇《Dify 的核心组件&#xff1a;从…

【已解决】在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件

在Spring Boot工程中&#xff0c;若未识别到resources/db文件夹下的SQL文件&#xff0c;通常与资源路径配置、构建工具设置或代码加载方式有关。以下是逐步排查和解决方案&#xff1a;​​1. 确认SQL文件存放路径​​Spring Boot默认从类路径&#xff08;classpath:&#xff09…

【Java】网络编程(4)

1. 再谈 UDP 报文长度&#xff1a;也是 2 个字节&#xff0c; 0 - 65535&#xff0c;也就是 64 kb。这表示一个 UDP 数据包一次最多只能传输 64 kb 的数据校验和&#xff1a;验证数据是否在传输过程中发生修改。数据在传输过程中可能受到信号干扰&#xff0c;发生 “比特翻转”…

QT(事件)

一、事件前言事件是QT的三大机制之一&#xff0c;一定程度上信号和槽也属于事件的一种 QT中的事件指哪些&#xff1a;窗口关闭&#xff0c;窗口显示&#xff0c;敲击键盘&#xff0c;点击鼠标左键、鼠标右键、鼠标滚轮&#xff0c;文件拖放等等1、事件循环QT中的所有事件&#…

基于 Vue2+Quill 的富文本编辑器全方案:功能实现与样式优化

在 Web 开发中&#xff0c;富文本编辑器是内容管理系统、博客平台等应用的核心组件。本文将详细介绍如何基于 Vue 和 Quill 构建一个功能完善、样式精美的富文本编辑器&#xff0c;重点解决字体字号选项冗长、样式不美观及功能完整性问题&#xff0c;提供可直接部署使用的完整方…

C#内嵌字符串格式化输出

内嵌字符串格式输出 double speedOfLight 299792.458;System.Globalization.CultureInfo.CurrentCulture System.Globalization.CultureInfo.GetCultureInfo("nl-NL"); string messageInCurrentCulture $"The speed of light is {speedOfLight:N3} km/s.&quo…

ThreeJS程序化生成城市大场景底座(性能测试)

一、简介基于矢量geojson数据构建建筑、植被、道路等&#xff0c;实现城市场景底座。涉及渲染的性能优化无非就是众所周知的那些事儿。视锥剔除、mesh合并、减少draw call、四叉树、八叉树、数据压缩、WebWorker、着色器优化等。下面是对东莞市数十万建筑以及海量3D树的渲染测试…

​电风扇离线语音芯片方案设计与应用场景:基于 8 脚 MCU 与 WTK6900P 的创新融合

​电风扇离线语音芯片方案设计与应用场景&#xff1a;基于 8 脚 MCU 与 WTK6900P 的创新融合一、引言在智能家居领域蓬勃发展的当下&#xff0c;用户对于家电产品的智能化和便捷性需求日益增长。传统的电风扇控制方式&#xff0c;如按键操作或遥控器控制&#xff0c;在某些场景…

(第四篇)spring cloud之Consul注册中心

目录 一、介绍 二、安装 三、整合代码使用 1、创建服务提供者8006 2、创建服务消费者80 3、Eureka、zookeeper和consul的异同点 一、介绍 Consul 是一套开源的分布式服务发现和配置管理系统&#xff0c;由 HashiCorp 公司用 Go 语言开发。它提供了微服务系统中的服务治理…

NAT 和 PNAT

核心概念与背景 IPv4 地址枯竭&#xff1a; IPv4 地址空间有限&#xff08;约 42.9 亿个&#xff09;&#xff0c;早已分配殆尽。NAT/PNAT 是缓解此问题的最重要、最广泛部署的技术。私有 IP 地址空间&#xff1a; IANA 保留了三个 IPv4 地址段专供私有网络内部使用&#xff08…

windows系统创建FTP服务

一丶开启FTP功能 控制面板->程序与功能->启用或关闭windows功能->Internet Information Services->勾选FTP服务器二丶创建FTP服务 1丶控制面板->windows工具->Internet Information Services (IIS) 管理器2丶网站->添加FTP站点->输入对应内容3丶点击新…

DeepSeek补全IBM MQ 9.4 REST API 执行命令的PPT

DeepSeek补全了我在网上找到的PPT的一页内容&#xff0c;帮了大忙了。人机协同&#xff0c;人工智能可以协助人更好的做事。下面的内容是讲解IBM MQ REST API 执行IBM MQ命令的PPT: MQSC for REST Tailored RESTful support for individual MQ objects and actions are in the …

【swift】SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案

SwiftUI动画卡顿全解&#xff1a;GeometryReader滥用检测与Canvas绘制替代方案一、GeometryReader的性能陷阱深度解析1. 布局计算机制2. 动画中的灾难性表现二、GeometryReader滥用检测系统1. 静态代码分析器2. 运行时性能监控三、Canvas绘制优化方案1. 基础Canvas实现2. 性能优…