Skip to main content

Unity Catalog

Open-source data catalog and governance platform.

CategoryAnalytics
Deploy./uis deploy unity-catalog
Undeploy./uis undeploy unity-catalog
Depends onpostgresql
Required byNone
Imageunitycatalog/unitycatalog:latest
Default namespaceunity-catalog

What It Does

Unity Catalog provides data governance, metadata management, and a three-level namespace (catalog.schema.table) for organizing data assets. It integrates with Spark for governed data access.

Known Issue

Unity Catalog container images have permission issues that cause crashes in Kubernetes. The service deploys but may not be fully functional. See troubleshooting below.

Key capabilities:

  • Three-level namespace — catalog.schema.table organization
  • Metadata management — centralized schema registry
  • Access control — fine-grained permissions on data assets
  • Spark integration — governed table access from Spark jobs
  • REST API/api/2.1/ for programmatic access

Deploy

# Deploy dependency first
./uis deploy postgresql

# Deploy Unity Catalog
./uis deploy unity-catalog

Verify

# Quick check
./uis verify unity-catalog

# Manual check
kubectl get pods -n unity-catalog

# Test API (uses wget since container has BusyBox, not curl)
kubectl exec -it -n unity-catalog deploy/unity-catalog -- \
wget -qO- http://localhost:8080/api/2.1/unity-catalog/catalogs

Configuration

SettingValueNotes
API port8080REST API endpoint
DatabasePostgreSQLMetadata stored in unity_catalog database
SecurityUID 100/GID 101Runs as unitycatalog user, not root

Key Files

FilePurpose
ansible/playbooks/320-setup-unity-catalog.ymlDeployment playbook
ansible/playbooks/320-remove-unity-catalog.ymlRemoval playbook

Undeploy

./uis undeploy unity-catalog

Troubleshooting

Container crashes with permission denied: This is a known issue with the official Unity Catalog container images. The container must run as UID 100/GID 101 (unitycatalog user). Check:

kubectl describe pod -n unity-catalog -l app=unity-catalog
kubectl logs -n unity-catalog -l app=unity-catalog

API returns 404: The API version is /api/2.1/, not /api/1.0/:

kubectl exec -it -n unity-catalog deploy/unity-catalog -- \
wget -qO- http://localhost:8080/api/2.1/unity-catalog/catalogs

BusyBox container limitations: The Unity Catalog container uses BusyBox. Use wget instead of curl:

# Use wget -S for HTTP status
kubectl exec -it -n unity-catalog deploy/unity-catalog -- wget -S http://localhost:8080/

Learn More