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
- PostgreSQL
- MySQL
- Oracle
- SQL Server
- SQLite (for development only)
Configuration Properties
Usage Examples
Spark Configuration
Start Spark with JDBC catalog using MySQL:PostgreSQL Example
Java API
Programmatically create a JDBC catalog:Flink Configuration
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:Performance Tuning
Enable Metadata Caching
Enable Metadata Caching
Optimize Connection Pool
Optimize Connection Pool
Use Connection Timeouts
Use Connection Timeouts
Migration from Hive
Migrate existing Hive tables to JDBC catalog:Troubleshooting
Connection Refused
Connection Refused
Verify:
- Database is running and accessible
- Firewall rules allow connections
- JDBC driver is in classpath
- Connection string is correct
Authentication Failed
Authentication Failed
Check:
- Username and password are correct
- User has CREATE, SELECT, INSERT, UPDATE, DELETE permissions
- SSL/TLS configuration if required
Table Not Found
Table Not Found
Ensure:
- Catalog schema exists in database
- Tables were created with correct catalog
- Namespace exists
Best Practices
- Use connection pooling for production workloads
- Enable SSL/TLS for secure connections
- Regular backups of the catalog database
- Monitor database performance for slow queries
- Use IAM authentication when available (AWS RDS)
- Separate warehouse storage from catalog database
Next Steps
Nessie Catalog
Git-like versioning for data lakes
Custom Catalog
Build your own catalog implementation