Las tablas Hive son carpetas de archivos más una entrada en un metastore. Funcionan, pero no tienen transacciones, cambiar el particionado obliga a reescribirlo todo y listar millones de archivos ralentiza cada consulta. Apache Iceberg lo resuelve con una verdadera capa de tabla: commits atómicos, cambios de esquema y de particiones sin reescrituras, viaje en el tiempo y planificación rápida. En 2026 es además el formato que Snowflake, Databricks, BigQuery, AWS, DuckDB y Polars leen y escriben. El 4 de noviembre AWS convirtió la migración en una función gestionada de Amazon S3 Tables. Esta guía cubre esa opción y las dos clásicas.
Método 1: en el sitio, con procedimientos de Spark
Iceberg incluye procedimientos de Spark que convierten una tabla Hive existente en una tabla Iceberg sin copiar datos. Leen la lista de archivos, escriben los metadatos y manifiestos de Iceberg y registran la tabla nueva. Los archivos de datos deben ser Parquet, ORC o Avro.
-- Step 1: try it safely. Creates db.sales_iceberg pointing at the same files.
-- The original Hive table is untouched.
CALL spark_catalog.system.snapshot('db.sales', 'db.sales_iceberg');
-- Test queries, row counts and downstream jobs against db.sales_iceberg...
-- Step 2: convert for real. Replaces db.sales with an Iceberg table
-- (the old Hive table is kept as a backup with a _BACKUP_ suffix).
CALL spark_catalog.system.migrate('db.sales');
-- Alternative: add existing files to an Iceberg table you created yourself
CALL spark_catalog.system.add_files(
table => 'db.sales_new',
source_table => 'db.sales'
);Método 2: reescritura completa con CREATE TABLE AS SELECT
Si la tabla Hive tiene problemas que quieres arreglar de todos modos, como miles de archivos diminutos, particiones equivocadas o una compresión antigua, escribe en su lugar una tabla Iceberg nueva:
CREATE TABLE lake.db.sales
USING iceberg
PARTITIONED BY (days(order_ts)) -- hidden partitioning: no extra date column needed
TBLPROPERTIES ('write.parquet.compression-codec' = 'zstd')
AS SELECT * FROM spark_catalog.db.sales;Se lee y escribe cada byte, así que tarda más y duplica el almacenamiento hasta que borres la tabla antigua. A cambio obtienes archivos del tamaño adecuado, compresión moderna y particionado oculto: las consultas filtran por order_ts e Iceberg descarta particiones automáticamente, así que los usuarios ya no necesitan conocer una columna de partición aparte.
Método 3: migración gestionada en Amazon S3 Tables
Novedad del 4 de noviembre de 2026. Si tus tablas Hive están registradas en AWS Glue y guardadas en Parquet, S3 Tables puede hacer toda la migración:
- Coste: solo pagas los datos que copia el trabajo; la conversión de Hive a Iceberg es gratuita. Los archivos de origen en S3 Intelligent-Tiering mantienen su nivel de acceso.
- Mejores archivos: las tablas comprimidas con Snappy se recomprimen en Zstandard y se compactan, lo que reduce el almacenamiento y el número de objetos.
- Límites en el lanzamiento: tablas Hive registradas en Glue, en Parquet, en la misma cuenta y región de AWS, en 10 regiones, entre ellas Irlanda, Fráncfort y Estocolmo en Europa.
- Para agentes de IA: AWS también publicó una skill de migración para que un agente ejecute el proceso, con tu aprobación.
¿Qué método usar?
| En el sitio (migrate) | Reescritura (CTAS) | S3 Tables gestionada | |
|---|---|---|---|
| Copia datos | No | Sí | Sí |
| Velocidad | Minutos | Horas en tablas grandes | Se ejecuta en segundo plano |
| Corrige archivos pequeños y particiones | No | Sí | Compacta y recomprime |
| Vuelta atrás | Desde la tabla de copia de seguridad | Conserva la tabla antigua | Integrada |
| Dónde | Cualquier Spark con Iceberg | Cualquier motor Iceberg | Solo AWS, Glue y Parquet |
La lista de comprobación del cambio
- 1
Enumera cada lector y escritor
Paneles, trabajos de Spark, consultas de Athena o Trino, exportaciones. Cada uno debe admitir Iceberg antes del cambio.
- 2
Detén o pausa las escrituras
Migra en un momento tranquilo, o usa la sincronización de S3 Tables para ponerte al día antes del cambio.
- 3
Compara los resultados
Número de filas, sumas de las columnas clave y algunas consultas de ejemplo en la tabla antigua y en la nueva.
- 4
Cambia el nombre
Apunta los trabajos a la tabla nueva, o deja que migrate sustituya el nombre por ti.
- 5
Programa el mantenimiento
Iceberg necesita compactación y caducidad de snapshots periódicas; S3 Tables, Databricks y Snowflake pueden hacerlo automáticamente.
- 6
Borra la tabla antigua más tarde
Conserva la copia de seguridad una o dos semanas antes de eliminarla.
Pon a prueba lo que has aprendido
1/3¿Qué hace el procedimiento migrate de Iceberg con los archivos de datos?
Es una conversión solo de metadatos; la tabla original se guarda como copia de seguridad.
2/3¿Por qué elegir en su lugar una reescritura completa?
CTAS lee y escribe todo, lo que permite cambiar la organización.
3/3¿Qué pagas en la migración gestionada de S3 Tables?
La conversión de Hive a Iceberg no tiene coste.
Has acertado 0 de 3.
Relacionado: Apache Iceberg v3, DuckDB frente a Polars frente a Spark y cómo elegir una base de datos.
Fuentes: AWS, "Amazon S3 Tables now provide a simple, cost-effective path for data lake modernization" (4 de noviembre de 2026); documentación de Apache Iceberg sobre procedimientos de Spark (snapshot, migrate, add_files) y propiedades de tabla; blog de Google Cloud (4 de noviembre de 2026) para la cifra de talabat. Prueba los procedimientos en una copia antes de usarlos en tablas de producción.
