¿Qué es un Catalog Integration?
Un Catalog Integration conecta Snowflake con un catálogo externo de metadatos Iceberg. Permite que Snowflake descubra y lea tablas Iceberg que otros motores han creado, sin necesidad de registrarlas manualmente.
AWS Glue Data Catalog
El catálogo más común en ecosistemas AWS:
-- Crear la integración con Glue
CREATE CATALOG INTEGRATION integracion_glue
CATALOG_SOURCE = GLUE
CATALOG_NAMESPACE = 'mi_base_datos_glue'
TABLE_FORMAT = ICEBERG
GLUE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/SnowflakeGlueRole'
GLUE_CATALOG_ID = '123456789012'
GLUE_REGION = 'us-east-1'
ENABLED = TRUE;
-- Ver las tablas disponibles en Glue
SELECT SYSTEM$LIST_ICEBERG_TABLES_FROM_CATALOG('integracion_glue');
-- Crear tabla Snowflake que apunta a la tabla Iceberg en Glue
CREATE ICEBERG TABLE ventas_desde_spark
EXTERNAL_VOLUME = 'vol_s3_iceberg'
CATALOG = 'integracion_glue'
CATALOG_TABLE_NAME = 'ventas_spark'; -- nombre en Glue
-- Consultar (Snowflake lee directo de S3, sin copiar)
SELECT region, SUM(monto) FROM ventas_desde_spark GROUP BY 1;
Databricks Unity Catalog
Para empresas con ecosistemas Databricks:
CREATE CATALOG INTEGRATION integracion_unity
CATALOG_SOURCE = OBJECT_STORE
CATALOG_NAMESPACE = 'mi_catalog.mi_schema'
TABLE_FORMAT = ICEBERG
-- Unity Catalog expone un REST API compatible con Iceberg
CATALOG_ENDPOINT_URL = 'https://mi-workspace.azuredatabricks.net/api/2.1/unity-catalog/iceberg'
ENABLED = TRUE;
Apache Polaris (Open Source)
Polaris es el catálogo Iceberg REST open source de Snowflake:
-- Conectar a un servidor Polaris
CREATE CATALOG INTEGRATION integracion_polaris
CATALOG_SOURCE = POLARIS
CATALOG_NAMESPACE = 'mi_namespace'
REST_CONFIG = (
CATALOG_URI = 'https://mi-polaris.example.com/api/catalog'
WAREHOUSE = 'mi_warehouse'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'mi_client_id'
OAUTH_CLIENT_SECRET = 'mi_secret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
Auto-discover: Linked Catalog Database
La función más poderosa — crear una base de datos que sincroniza automáticamente con el catálogo externo:
-- Crear una "linked catalog database" que espeja el catálogo de Glue
CREATE DATABASE mi_glue_db
FROM CATALOG INTEGRATION integracion_glue
AUTO_REFRESH = TRUE;
-- Ahora TODAS las tablas Iceberg de Glue aparecen como tablas Snowflake
SHOW TABLES IN DATABASE mi_glue_db;
-- Consultar directamente
SELECT * FROM mi_glue_db.schema_nombre.tabla_iceberg LIMIT 100;
Con AUTO_REFRESH = TRUE, Snowflake detecta nuevas tablas o cambios de esquema en el catálogo externo automáticamente.
Cuándo usar cada catálogo
| Si usas… | Catálogo recomendado |
|---|---|
| AWS + S3 + Spark/Glue | AWS Glue |
| Azure + ADLS + Databricks | Unity Catalog |
| Multi-cloud o puro open source | Apache Polaris |
| Solo Snowflake | Catálogo interno de Snowflake |
Próximos pasos
La última lección cubre casos de uso de Iceberg en arquitecturas multi-cloud con Snowpark.