Amundsen
Amundsen is a metadata driven application for improving the productivity of data analysts, data scientists and engineers when interacting with data.
Install / Use
/learn @amundsen-io/AmundsenREADME
Amundsen is a data discovery and metadata engine for improving the productivity of data analysts, data scientists and engineers when interacting with data. It does that today by indexing data resources (tables, dashboards, streams, etc.) and powering a page-rank style search based on usage patterns (e.g. highly queried tables show up earlier than less queried tables). Think of it as Google search for data. The project is named after Norwegian explorer Roald Amundsen, the first person to discover the South Pole.
<img src="https://raw.githubusercontent.com/lfai/artwork/master/lfaidata-assets/lfaidata/stacked/color/lfaidata-stacked-color.png" alt="LF AI & Data" width="200" />
Amundsen is hosted by the LF AI & Data Foundation. It includes three microservices, one data ingestion library and one common library.
- amundsenfrontendlibrary: Frontend service which is a Flask application with a React frontend. <img src="https://badge.fury.io/py/amundsen-frontend.svg" />
- amundsensearchlibrary: Search service, which leverages Elasticsearch for search capabilities, is used to power frontend metadata searching. <img src="https://badge.fury.io/py/amundsen-search.svg" />
- amundsenmetadatalibrary: Metadata service, which leverages Neo4j or Apache Atlas as the persistent layer, to provide various metadata. <img src="https://badge.fury.io/py/amundsen-metadata.svg" />
- amundsendatabuilder: Data ingestion library for building metadata graph and search index. Users could either load the data with a python script with the library or with an Airflow DAG importing the library. <img src="https://badge.fury.io/py/amundsen-databuilder.svg" />
- amundsencommon: Amundsen Common library holds common codes among microservices in Amundsen. <img src="https://badge.fury.io/py/amundsen-common.svg" />
- amundsengremlin: Amundsen Gremlin library holds code used for converting model objects into vertices and edges in gremlin. It's used for loading data into an AWS Neptune backend. <img src="https://badge.fury.io/py/amundsen-gremlin.svg" />
- amundsenrds: Amundsenrds contains ORM models to support relational database as metadata backend store in Amundsen. The schema in ORM models follows the logic of databuilder models. Amundsenrds will be used in databuilder and metadatalibrary for metadata storage and retrieval with relational databases. <img src="https://badge.fury.io/py/amundsen-rds.svg" />
Documentation
Community Roadmap
We want your input about what is important, for that, add your votes using the 👍 reaction:
Requirements
- Python >= 3.8
- Node v12
User Interface
Please note that the mock images only served as demonstration purpose.
-
Landing Page: The landing page for Amundsen including 1. search bars; 2. popular used tables;

-
Search Preview: See inline search results as you type

-
Table Detail Page: Visualization of a Hive / Redshift table

-
Column detail: Visualization of columns of a Hive / Redshift table which includes an optional stats display

-
Data Preview Page: Visualization of table data preview which could integrate with Apache Superset or other Data Visualization Tools.

Getting Started and Installation
Please visit the Amundsen installation documentation for a quick start to bootstrap a default version of Amundsen with dummy data.
Supported Entities
- Tables (from Databases)
- Dashboards
- ML Features
- People (from HR systems)
Supported Integrations
Table Connectors
- Amazon Athena
- Amazon EventBridge
- Amazon Glue and anything built over it
- Amazon Redshift
- Apache Cassandra
- Apache Druid
- Apache Hive
- CSV
- dbt
- Delta Lake
- Elasticsearch
- Google BigQuery
- IBM DB2
- Kafka Schema Registry
- Microsoft SQL Server
- MySQL
- Oracle (through dbapi or sql_alchemy)
- PostgreSQL
- PrestoDB
- Trino (formerly Presto SQL)
- Vertica
- Snowflake
Amundsen can also connect to any database that provides dbapi or sql_alchemy interface (which most DBs provide).
Table Column Statistics
Dashboard Connectors
ETL Orchestration
Get Involved in the Community
Want help or want to help? Use the button in our header to join our slack channel.
Contributions are also more than welcome! As explained in CONTRIBUTING.md there are many ways to contribute, it does not all have to be code with new features and bug fixes, also documentation, like FAQ entries, bug reports, blog posts sharing experiences etc. all help move Amundsen forward. If you find a security vulnerability, please follow this guide.
Architecture Overview
Please visit Architecture for Amundsen architecture overview.
Resources
Blog Posts and Interviews
- Amundsen - Lyft's data discovery & metadata engine (April 2019)
- Software Engineering Daily podcast on Amundsen (April 2019)
- How Lyft Drives Data Discovery (July 2019)
- Data Engineering podcast on Solving Data Discovery At Lyft (Aug 2019)
- Open Sourcing Amundsen: A Data Discovery And Metadata Platform (Oct 2019)
- [Adding Data Quality into Amundsen with Programmatic Descriptions](https://technology.edmunds.com/2020
