Skip to main content

Overview

The JDBC catalog allows you to manage Iceberg tables using any relational database that supports atomic transactions and read serializable isolation. This provides a lightweight, portable catalog solution without requiring Hive or cloud-specific services.

Supported Databases

The JDBC catalog works with any database that supports:
  • Atomic transactions for safe concurrent commits
  • Serializable isolation for consistent reads
Common databases:
  • PostgreSQL
  • MySQL
  • Oracle
  • SQL Server
  • SQLite (for development only)
SQLite does not support concurrent writes well. Use it only for local development and testing.

Configuration Properties

Usage Examples

Spark Configuration

Start Spark with JDBC catalog using MySQL:

PostgreSQL Example

Java API

Programmatically create a JDBC catalog:

PySpark Example

Database Schema

The JDBC catalog creates these tables in your database:

iceberg_tables

Stores table metadata:

iceberg_namespace_properties

Stores namespace metadata:

Connection Pooling

For production deployments, configure connection pooling:

SSL/TLS Configuration

MySQL with SSL

PostgreSQL with SSL

AWS RDS with IAM Authentication

Use IAM authentication instead of passwords:
See AWS RDS IAM Authentication for complete setup.

Performance Tuning

Migration from Hive

Migrate existing Hive tables to JDBC catalog:

Troubleshooting

Verify:
  • Database is running and accessible
  • Firewall rules allow connections
  • JDBC driver is in classpath
  • Connection string is correct
Check:
  • Username and password are correct
  • User has CREATE, SELECT, INSERT, UPDATE, DELETE permissions
  • SSL/TLS configuration if required
Ensure:
  • Catalog schema exists in database
  • Tables were created with correct catalog
  • Namespace exists

Best Practices

  1. Use connection pooling for production workloads
  2. Enable SSL/TLS for secure connections
  3. Regular backups of the catalog database
  4. Monitor database performance for slow queries
  5. Use IAM authentication when available (AWS RDS)
  6. Separate warehouse storage from catalog database

Next Steps

Nessie Catalog

Git-like versioning for data lakes

Custom Catalog

Build your own catalog implementation