Interoperable
Delta Lake, Apache Iceberg™, Parquet, CSV, and JSON behind one interface, with an Iceberg REST Catalog API so the broader ecosystem connects natively.
Open source governance for tables, multimodal data, functions, and models. Unity Catalog works across Delta Lake, Apache Iceberg™, every major cloud, and the engines you already run.
Interoperable with the engines, clouds, and AI tools you already use
One open catalog that sits underneath every engine, format, and cloud, so governance follows your data instead of your vendor.
Delta Lake, Apache Iceberg™, Parquet, CSV, and JSON behind one interface, with an Iceberg REST Catalog API so the broader ecosystem connects natively.
Apache 2.0 licensed, including the OpenAPI specification, server, and clients. No proprietary lock-in, and a community that shapes the roadmap.
Strong authentication, secure credential vending, and asset-level access control protect data and AI assets with one consistent policy model.
Tables, unstructured volumes, functions, and ML models live side by side in one namespace, ready for analytics and generative AI workloads.
Unity Catalog speaks open APIs, so the tools your team already uses can discover, read, and write governed data without a rewrite.
from pyspark.sql import SparkSession
spark = ( SparkSession.builder.appName("uc-quickstart") .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") .config("spark.sql.catalog.unity", "io.unitycatalog.spark.UCSingleCatalog") .config("spark.sql.catalog.unity.uri", "http://localhost:8080") .config("spark.sql.defaultCatalog", "unity") .getOrCreate())
spark.sql("SHOW SCHEMAS IN unity").show()
( spark.table("unity.default.numbers") .where("as_int > 500") .show())import duckdb
con = duckdb.connect()con.execute("INSTALL delta")con.execute("LOAD delta")con.execute("INSTALL unity_catalog")con.execute("LOAD unity_catalog")
con.execute(""" CREATE SECRET ( TYPE unity_catalog, TOKEN 'not-used', ENDPOINT 'http://localhost:8080' )""")con.execute("ATTACH 'retail' AS retail (TYPE unity_catalog, DEFAULT_SCHEMA 'sales')")
con.sql("SELECT database, schema, name FROM (SHOW ALL TABLES)").show()
con.sql(""" SELECT customer, amount FROM retail.sales.orders WHERE amount > 5 ORDER BY order_id""").show()import pyarrow as pafrom pyiceberg.catalog import load_catalogfrom pyiceberg.expressions import EqualTofrom pyiceberg.schema import Schemafrom pyiceberg.types import BooleanType, IntegerType, NestedField, StringType
catalog = load_catalog( "unity", type="rest", uri="http://localhost:8080/api/2.1/unity-catalog/iceberg", warehouse="unity",)catalog.create_namespace_if_not_exists("quickstart")
pets = catalog.create_table_if_not_exists( "quickstart.pets", schema=Schema( NestedField(1, "name", StringType(), required=True), NestedField(2, "age", IntegerType(), required=True), NestedField(3, "adopted", BooleanType(), required=True), ),)pets.append(pa.Table.from_pylist( [{"name": "Biscuit", "age": 11, "adopted": False}, {"name": "Pepper", "age": 3, "adopted": True}], schema=pets.schema().as_arrow(),))
print(pets.scan(row_filter=EqualTo("adopted", False)).to_pandas())# Browse the sample datauc catalog list --output jsonPrettyuc schema list --catalog unity --output jsonPrettyuc table read --full_name unity.default.numbers --max_results 5
# Create a catalog, a schema, and a Delta tableuc catalog create --name quickstart --comment "My first catalog"uc schema create --catalog quickstart --name sales --comment "Order data"uc table create --full_name quickstart.sales.orders \ --columns "order_id INT, customer STRING, amount DOUBLE" \ --format DELTA \ --storage_location file:///tmp/uc/orders
# Write sample rows, then read them backuc table write --full_name quickstart.sales.ordersuc table read --full_name quickstart.sales.orders --max_results 5Unity Catalog governs far more than tables. Bring structured data, unstructured files, AI tools, and models under a single, open model of access.
Every asset is addressed as catalog.schema.asset, so discovery, lineage, and permissions work the same way across your entire estate.
catalog.schema.assetGovern Delta Lake and native Apache Iceberg™ tables, plus Parquet, CSV, and JSON. Delta UniForm exposes Delta tables to Iceberg readers.
delta · iceberg · parquetImages, documents, audio, and model artifacts get the same access controls and auditability as your tables.
volumesRegister SQL and Python functions once, then call them from LangChain, LlamaIndex, and OpenAI agents as governed tools.
functionsUse Unity Catalog as an MLflow model registry to register and version models alongside the data they were trained on.
modelsOAuth-based authentication, temporary credential vending for S3, ADLS, and GCS, and fine-grained grants on every securable.
authn · authz · vendingA universal interface gives you broad interoperability across cloud platforms, compute engines, AI frameworks, and the catalog and governance tools you already rely on.
Query the same governed tables from any engine.
Run anywhere, from your laptop to every major cloud.
Use catalog functions as tools in your agents.
Plug into the pipelines and policies you already run.
Quickstart, deployment guides, integrations, and the server and CLI reference.
Read the docsAPI referenceBrowse the REST API reference for catalogs, schemas, tables, volumes, functions, and models.
Explore the APICommunityAsk questions, share what you're building, and help shape the roadmap with contributors worldwide.
Join SlackCan't find what you're looking for? Ask the community on Slack or open an issue on GitHub.
Yes. Unity Catalog is licensed under Apache 2.0, including the server, the OpenAPI specification, and the clients. It is hosted by the LF AI & Data Foundation and developed in the open on GitHub.
Databricks open-sourced Unity Catalog in 2024 and contributed it to the LF AI & Data Foundation. The open-source project is now built by a community of contributors from many companies, with open APIs that any vendor or engine can implement.
Delta Lake and native Apache Iceberg™ tables (as of 0.7), plus Parquet, CSV, JSON, and more. Delta UniForm tables are readable by Iceberg clients, and the Iceberg REST Catalog API lets Iceberg engines connect directly.
Apache Spark, DuckDB, Daft, StarRocks, PuppyGraph, and any Iceberg REST client such as PyIceberg. Functions registered in the catalog can be used as tools in LangChain, LlamaIndex, and OpenAI agents.
Yes. Volumes govern unstructured files like documents and images, functions can be exposed as AI tools, and Unity Catalog can act as an MLflow model registry, all under the same permissions model.
Clone the GitHub repository and run bin/start-uc-server (Java 17+), or pull the official unitycatalog/unitycatalog Docker image. The quickstart walks you through creating and querying your first tables.
Spin up a Unity Catalog server in under a minute, then join the community building the open standard for data and AI governance.
git clone https://github.com/unitycatalog/unitycatalog.git && cd unitycatalog && bin/start-uc-server