Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Migrazione di tabelle esistenti su Apache Iceberg
Per migrare l'attuale Athena AWS Glue o le tabelle (note anche come tabelle Hive) nel formato Iceberg, puoi utilizzare la migrazione dei dati sul posto o completa:
-
La migrazione sul posto è il processo di generazione dei file di metadati di Iceberg su file di dati esistenti.
-
La migrazione completa dei dati crea il livello di metadati Iceberg e riscrive anche i file di dati esistenti dalla tabella originale alla nuova tabella Iceberg.
Le sezioni seguenti forniscono una panoramica delle tabelle APIs disponibili per la migrazione e linee guida per la scelta di una strategia di migrazione. Per ulteriori informazioni su queste due strategie, consulta la sezione Table Migration
Migrazione sul posto
La migrazione sul posto elimina la necessità di riscrivere tutti i file di dati. I file di metadati Iceberg vengono invece generati e collegati ai file di dati esistenti. Iceberg offre tre opzioni per implementare la migrazione sul posto:
-
Utilizzando la
snapshot
procedura, come spiegato nelle sezioni Snapshot Table e Procedura Spark: snapshotnella documentazione di Iceberg. -
Utilizzo della
add_files
procedura, come spiegato nelle sezioni Aggiungi file e Procedura Spark: add_filesnella documentazione di Iceberg. -
Utilizzando la
migrate
procedura, come spiegato nelle sezioni Migrate Table e Procedura Spark:Migrate nella documentazione di Iceberg.
Attualmente, la procedura di migrazione non funziona direttamente con il metastore Hive, ma AWS Glue Data Catalog solo con il metastore Hive. Se hai l'esigenza di utilizzare la migrate
procedura anziché snapshot
oppureadd_files
, puoi utilizzare un cluster Amazon EMR temporaneo con il metastore Hive (HMS). Questo approccio richiede la versione 1.2 o successiva di Iceberg.
Supponiamo che tu voglia creare la seguente tabella Hive:

Puoi creare questa tabella Hive eseguendo questo codice nella console Athena:
CREATE EXTERNAL TABLE 'hive_table'( 'id' bigint, 'data' string) USING parquet LOCATION 's3://datalake-xxxx/aws_workshop/iceberg_db/hive_table' INSERT INTO iceberg_db.hive_table VALUES (1, 'a')
Se la tua tabella Hive è partizionata, includi l'istruzione partition e aggiungi le partizioni in base ai requisiti di Hive.
ALTER TABLE default.placeholder_table_for_migration ADD PARTITION (date = '2023-10-10')
Fasi:
-
Crea un cluster Amazon EMR senza abilitare l' AWS Glue Data Catalog integrazione, ovvero non selezionare le caselle di controllo per i metadati delle tabelle Hive o Spark. Questo perché per questa soluzione alternativa utilizzerai il metastore Hive (HMS) nativo disponibile nel cluster.
-
Configura la sessione Spark per utilizzare l'implementazione del catalogo Iceberg Hive.
"spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions", "spark.sql.catalog.spark_catalog": "org.apache.iceberg.spark.SparkSessionCatalog", "spark.sql.catalog.spark_catalog.type": "hive",
-
Verifica che il tuo cluster Amazon EMR non sia connesso a AWS Glue Data Catalog
show databases
show tables
-
Registra la tabella Hive nel metastore Hive del tuo cluster Amazon EMR, quindi utilizza la procedura Iceberg.
migrate
Questa procedura crea i file di metadati Iceberg nella stessa posizione della tabella Hive.
-
Registra la tabella Iceberg migrata in. AWS Glue Data Catalog
-
Torna a un cluster Amazon EMR con l' AWS Glue Data Catalog integrazione abilitata.
-
Usa la seguente configurazione di Iceberg nella sessione Spark.
"spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions", "spark.sql.catalog.glue_catalog": "org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.glue_catalog.warehouse": "s3://datalake-xxxx/aws_workshop", "spark.sql.catalog.glue_catalog.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.glue_catalog.io-impl": "org.apache.iceberg.aws.s3.S3FileIO",
Ora puoi interrogare questa tabella da Amazon EMR o AWS Glue Athena.

Migrazione completa dei dati
La migrazione completa dei dati ricrea i file di dati e i metadati. Questo approccio richiede più tempo e risorse di elaborazione aggiuntive rispetto alla migrazione sul posto. Tuttavia, questa opzione aiuta a migliorare la qualità delle tabelle: è possibile convalidare i dati, apportare modifiche allo schema e alle partizioni, ripristinare i dati e così via. Per implementare la migrazione completa dei dati, utilizza una delle seguenti opzioni:
-
Usa l'istruzione
CREATE TABLE ... AS SELECT
(CTAS) in Spark on Amazon EMR o Athena. AWS Glue Puoi impostare le specifiche della partizione e le proprietà della tabella per la nuova tabella Iceberg utilizzando le clausole and. PARTITIONED BY
TBLPROPERTIES
È possibile ottimizzare lo schema e il partizionamento per la nuova tabella in base alle proprie esigenze invece di ereditarli semplicemente dalla tabella di origine. -
Leggi dalla tabella di origine e scrivi i dati come nuova tabella Iceberg utilizzando Spark su Amazon EMR oppure AWS Glue (vedi Creazione di una tabella
nella documentazione di Iceberg).
Scelta di una strategia di migrazione
Per scegliere la strategia di migrazione migliore, considera le domande nella tabella seguente.
Domanda |
Raccomandazione |
---|---|
Qual è il formato del file di dati (ad esempio, CSV o Apache Parquet)? |
|
Vuoi aggiornare o consolidare lo schema della tabella? |
|
La tabella trarrebbe vantaggio dalla modifica della strategia di partizione? |
|
La tabella trarrebbe vantaggio dall'aggiunta o dalla modifica della strategia di ordinamento? |
|
La tabella contiene molti file di piccole dimensioni? |
|