Le tabelle Hive sono cartelle di file più una voce in un metastore. Funzionano, ma non hanno transazioni, cambiare il partizionamento significa riscrivere tutto, ed elencare milioni di file rallenta ogni query. Apache Iceberg risolve tutto questo con un vero livello di tabella: commit atomici, modifiche a schema e partizioni senza riscritture, time travel e pianificazione veloce. Nel 2026 è anche il formato che Snowflake, Databricks, BigQuery, AWS, DuckDB e Polars leggono e scrivono. Il 4 novembre AWS ha trasformato la migrazione in una funzione gestita di Amazon S3 Tables. Questa guida copre quell'opzione e le due classiche.
Metodo 1: sul posto, con le procedure Spark
Iceberg include procedure Spark che trasformano una tabella Hive esistente in una tabella Iceberg senza copiare i dati. Leggono l'elenco dei file, scrivono metadati e manifest Iceberg e registrano la nuova tabella. I file di dati devono essere 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'
);Metodo 2: riscrittura completa con CREATE TABLE AS SELECT
Se la tabella Hive ha problemi che vuoi comunque risolvere, come migliaia di file minuscoli, partizioni sbagliate o una compressione vecchia, scrivi invece una nuova tabella Iceberg:
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;Così leggi e scrivi ogni byte, quindi ci vuole di più e lo spazio raddoppia finché non cancelli la vecchia tabella. In cambio ottieni file di dimensioni giuste, compressione moderna e partizionamento nascosto: le query filtrano su order_ts e Iceberg esclude le partizioni da solo, così gli utenti non devono più conoscere una colonna di partizione separata.
Metodo 3: migrazione gestita in Amazon S3 Tables
Novità del 4 novembre 2026. Se le tue tabelle Hive sono registrate in AWS Glue e salvate in Parquet, S3 Tables può eseguire tutta la migrazione:
- Costo: paghi solo i dati copiati dal job; la conversione da Hive a Iceberg è gratuita. I file sorgente in S3 Intelligent-Tiering mantengono il loro livello di accesso.
- File migliori: le tabelle compresse con Snappy vengono ricompresse in Zstandard e compattate, riducendo spazio e numero di oggetti.
- Limiti al lancio: tabelle Hive registrate in Glue, in Parquet, nello stesso account e nella stessa regione AWS, in 10 regioni, tra cui Irlanda, Francoforte e Stoccolma in Europa.
- Per gli agenti AI: AWS ha pubblicato anche una skill di migrazione con cui un agente può eseguire il flusso, con la tua approvazione.
Quale metodo usare?
| Sul posto (migrate) | Riscrittura (CTAS) | S3 Tables gestita | |
|---|---|---|---|
| Copia i dati | No | Sì | Sì |
| Velocità | Minuti | Ore per le tabelle grandi | Gira in background |
| Corregge file piccoli e partizioni | No | Sì | Compatta e ricomprime |
| Rollback | Dalla tabella di backup | Tieni la vecchia tabella | Integrato |
| Dove | Qualsiasi Spark con Iceberg | Qualsiasi motore Iceberg | Solo AWS, Glue e Parquet |
La checklist del passaggio
- 1
Elenca chi legge e chi scrive
Dashboard, job Spark, query Athena o Trino, esportazioni. Ognuno deve supportare Iceberg prima del passaggio.
- 2
Ferma o metti in pausa le scritture
Migra in un momento tranquillo, oppure usa la sincronizzazione di S3 Tables per recuperare le modifiche prima del passaggio.
- 3
Confronta i risultati
Numero di righe, somme delle colonne principali e qualche query di esempio sulla tabella vecchia e su quella nuova.
- 4
Cambia il nome
Punta i job alla nuova tabella, o lascia che migrate sostituisca il nome per te.
- 5
Pianifica la manutenzione
Iceberg ha bisogno di compattazione e scadenza degli snapshot regolari; S3 Tables, Databricks e Snowflake possono farlo in automatico.
- 6
Elimina la vecchia tabella più tardi
Tieni il backup per una o due settimane prima di cancellarlo.
Verifica cosa hai capito
1/3Cosa fa la procedura migrate di Iceberg con i file di dati?
È una conversione solo dei metadati; la tabella originale resta come backup.
2/3Perché scegliere invece una riscrittura completa?
CTAS legge e scrive tutto, e questo permette di cambiare la struttura.
3/3Cosa paghi nella migrazione gestita di S3 Tables?
La conversione da Hive a Iceberg non ha costi.
Hai risposto correttamente a 0 domande su 3.
Correlati: Apache Iceberg v3, DuckDB contro Polars contro Spark e come scegliere un database.
Fonti: AWS, "Amazon S3 Tables now provide a simple, cost-effective path for data lake modernization" (4 novembre 2026); documentazione di Apache Iceberg sulle procedure Spark (snapshot, migrate, add_files) e sulle proprietà delle tabelle; blog di Google Cloud (4 novembre 2026) per il dato di talabat. Prova le procedure su una copia prima di usarle sulle tabelle di produzione.
