Utilizzo della versione 3 delle specifiche del formato di tabella Iceberg - AWS Guida prescrittiva

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à.

Utilizzo della versione 3 delle specifiche del formato di tabella Iceberg

L'ultima versione della specifica del formato di tabella di Apache Iceberg è la versione 3. Questa versione introduce funzionalità avanzate per la creazione di data lake con dimensioni di petabyte con prestazioni migliorate e costi operativi ridotti. Risolve i comuni problemi di prestazioni riscontrati con la versione 2, in particolare per quanto riguarda gli aggiornamenti in batch e le operazioni di eliminazione in conformità.

AWS fornisce supporto per i vettori di eliminazione e la derivazione delle righe come definito nella specifica Iceberg versione 3. Queste funzionalità sono disponibili con Apache Spark nei seguenti siti. Servizi AWS

Servizio AWS Supporto per la versione 3

Amazon EMR per Apache Spark

Amazon EMR versione 7.12 e successive

AWS Glue

AWS Glue: API REST Iceberg, manutenzione delle tabelle

Notebook Amazon SageMaker Unified Studio

Tabelle Amazon S3: API REST Iceberg, manutenzione delle tabelle

Amazon Athena (Torino)

No

Caratteristiche principali della versione 3

I vettori di eliminazione sostituiscono i file di eliminazione posizionale utilizzati nella versione 2 con un formato binario efficiente memorizzato come file Puffin. In questo modo si elimina l'amplificazione della scrittura dovuta agli aggiornamenti casuali in batch e alle cancellazioni dovute alla conformità al Regolamento generale sulla protezione dei dati (GDPR), e si riduce significativamente il sovraccarico legato alla conservazione di nuovi dati. Organizations che elaborano aggiornamenti ad alta frequenza vedranno miglioramenti immediati nelle prestazioni di scrittura e costi di storage ridotti grazie a un minor numero di file di piccole dimensioni.

La derivazione delle righe consente un tracciamento preciso delle modifiche a livello di riga. I sistemi a valle possono elaborare le modifiche in modo incrementale, velocizzando le pipeline di dati e riducendo i costi di elaborazione per i flussi di lavoro di change data capture (CDC). Questa funzionalità integrata elimina la necessità di implementazioni personalizzate per il monitoraggio delle modifiche.

Compatibilità delle versioni

La versione 3 mantiene la compatibilità con le versioni precedenti con le tabelle della versione 2. I servizi AWS supportano contemporaneamente le tabelle della versione 2 e della versione 3, quindi puoi:

  • Esegui query su entrambe le tabelle della versione 2 e della versione 3.

  • Aggiorna le tabelle della versione 2 esistente alla versione 3 senza riscrittura dei dati.

  • Esegui query di viaggio nel tempo che riguardano le istantanee della versione 2 e della versione 3.

  • Utilizza l'evoluzione dello schema e il partizionamento nascosto tra le versioni delle tabelle.

Guida introduttiva alla versione 3

Prerequisiti

Prima di utilizzare le tabelle della versione 3, assicurati di disporre di:

  • E Account AWS con autorizzazioni AWS Identity and Access Management (IAM) appropriate.

  • Accesso a uno o più servizi di AWS analisi (Amazon EMR, notebook AWS Glue Amazon SageMaker Unified Studio o Amazon S3 Tables).

  • Un bucket S3 per l'archiviazione di dati e metadati delle tabelle.

  • Un bucket da tavolo per iniziare a usare Amazon S3 Tables o un bucket S3 generico se stai costruendo la tua infrastruttura Iceberg.

  • AWS Glue Un catalogo configurato.

Creazione di tabelle della versione 3

Creazione di nuove tabelle

Per creare una nuova tabella Iceberg versione 3, imposta la proprietà format-version table su 3.

Usando Spark SQL:

CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Aggiornamento delle tabelle della versione 2 alla versione 3

È possibile aggiornare atomicamente le tabelle della versione 2 esistenti alla versione 3 senza riscrivere i dati.

Usando Spark SQL:

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
Importante

La versione 3 è un aggiornamento unidirezionale. Dopo l'aggiornamento di una tabella dalla versione 2 alla versione 3, non è possibile eseguire il downgrade alla versione 2 tramite operazioni standard.

Cosa succede durante l'aggiornamento:

  • Una nuova istantanea dei metadati viene creata atomicamente.

  • I file di dati esistenti di Parquet vengono riutilizzati.

  • I campi di derivazione delle righe vengono aggiunti ai metadati della tabella.

Dopo l'aggiornamento:

  • La prossima compattazione rimuoverà i file eliminati della vecchia versione 2.

  • Le nuove modifiche utilizzeranno i file vettoriali di eliminazione della versione 3.

L'aggiornamento non esegue un riempimento cronologico dei record di tracciamento delle modifiche alla derivazione delle righe.

Abilitazione dei vettori di eliminazione

Per sfruttare i vettori di eliminazione per aggiornamenti, eliminazioni e unioni, configura la modalità di scrittura.

Usare Spark SQL:

ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

Queste impostazioni assicurano che le operazioni di aggiornamento, eliminazione e unione creino file vettoriali di eliminazione invece di riscrivere interi file di dati.

Utilizzo della derivazione delle righe per il tracciamento delle modifiche

La versione 3 aggiunge automaticamente i campi di metadati relativi alla derivazione delle righe per tenere traccia delle modifiche.

Usando Spark SQL:

# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence

Il _row_id campo identifica in modo univoco ogni riga e _last_updated_sequence_number tiene traccia dell'ultima modifica della riga. Usa questi campi per:

  • Identifica le righe modificate per l'elaborazione incrementale.

  • Tieni traccia della derivazione dei dati per garantire la conformità.

  • Ottimizza le pipeline CDC.

  • Riduci i costi di elaborazione elaborando solo le modifiche.

Le migliori pratiche per la versione 3

Quando usare la versione 3

Valuta la possibilità di effettuare l'aggiornamento alla versione 3 o di iniziare dalla versione 3 quando:

  • Si eseguono aggiornamenti o eliminazioni in batch frequenti.

  • Devi soddisfare il GDPR o i requisiti di cancellazione in conformità.

  • I tuoi carichi di lavoro comportano disturbi ad alta frequenza.

  • Hai bisogno di flussi di lavoro CDC efficienti.

  • Vuoi ridurre i costi di archiviazione derivanti da file di piccole dimensioni.

  • Hai bisogno di migliori funzionalità di tracciamento delle modifiche.

Ottimizzazione delle prestazioni di scrittura

  • Abilita i vettori di eliminazione per carichi di lavoro che richiedono aggiornamenti elevati:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Configura le dimensioni dei file appropriate:

    SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )

Ottimizzazione delle prestazioni di lettura

  • Usa la derivazione delle righe per l'elaborazione incrementale.

  • Usa il viaggio nel tempo per accedere ai dati storici senza copiarli.

  • Abilita la raccolta di statistiche per una migliore pianificazione delle query.

Strategia di migrazione

Quando esegui la migrazione dalla versione 2 alla versione 3, segui queste best practice:

  • Esegui prima il test in un ambiente non di produzione per convalidare il processo di aggiornamento e le prestazioni.

  • Effettua l'upgrade durante i periodi di bassa attività per ridurre al minimo l'impatto sulle operazioni simultanee.

  • Monitora le prestazioni iniziali e monitora le metriche dopo l'aggiornamento.

  • Esegui la compattazione per consolidare i file eliminati dopo l'aggiornamento.

  • Aggiorna la documentazione del team in modo che rifletta le funzionalità della versione 3.

Considerazioni sulla compatibilità

  • Versioni del motore: assicurati che tutti i motori che accedono alla tabella supportino la versione 3.

  • Strumenti di terze parti: verifica la compatibilità dello strumento con la versione 3 prima di eseguire l'aggiornamento.

  • Strategia di backup: test delle procedure di ripristino basate su snapshot.

  • Monitoraggio: aggiorna i dashboard di monitoraggio per le metriche specifiche della versione 3.

Risoluzione dei problemi

Problemi comuni

Errore: «la versione di formato 3 non è supportata»

  • Verifica che la versione del tuo motore supporti la versione 3.  Per informazioni specifiche, consultate la tabella all'inizio di questa sezione.

  • Verifica la compatibilità del catalogo.

  • Assicurati di utilizzare le versioni più recenti di Servizi AWS.

Degrado delle prestazioni dopo l'aggiornamento

  • Verificare che non vi siano errori di compattazione. Per ulteriori informazioni, consulta Registrazione e monitoraggio per le tabelle S3 nella documentazione di Amazon S3.

  • Verifica che i vettori di eliminazione siano abilitati. È necessario impostare le seguenti proprietà:

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

    È possibile verificare le proprietà della tabella con il codice seguente:

    DESCRIBE FORMATTED myns.orders_v3
  • Rivedi la tua strategia di partizione. Un partizionamento eccessivo può portare a file di piccole dimensioni. Esegui la seguente query per ottenere la dimensione media del file per la tua tabella:

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files

Incompatibilità con strumenti di terze parti

  • Verificate che lo strumento supporti le specifiche della versione 3.

  • Valuta la possibilità di mantenere le tabelle della versione 2 per gli strumenti non supportati.

  • Contatta il fornitore dello strumento per conoscere la tempistica del supporto per la versione 3.

Utilizzo della guida

Prezzi

Disponibilità

Il supporto della versione 3 della specifica del formato di tabella Iceberg è disponibile in tutti i paesi in Regioni AWS cui operano Amazon EMR AWS Glue e S3 Tables. AWS Glue Data CatalogPer la disponibilità per regione, consulta Servizi AWS per regione.

Risorse aggiuntive