Lavorare con Apache Iceberg V3 - Amazon Simple Storage Service

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

Lavorare con Apache Iceberg V3

Apache Iceberg Version 3 (V3) è l'ultima versione della specifica del formato di tabella Apache Iceberg, che introduce funzionalità avanzate per la creazione di data lake su scala petabyte con prestazioni migliorate e sovraccarico operativo ridotto. V3 risolve i problemi di prestazioni più comuni riscontrati con la versione 2, in particolare per quanto riguarda gli aggiornamenti in batch e le eliminazioni a norma di legge.

AWS fornisce supporto per i vettori di eliminazione e la derivazione delle righe come definito nella specifica di Apache Iceberg Version 3 (V3). Queste funzionalità sono disponibili con Apache Spark su Amazon EMR 7.12, Glue AWS ETL,Amazon SageMaker Unified Studio Notebooks e tabelle Apache Iceberg in Glue Data Catalog, incluse le tabelle Amazon S3.AWS

Caratteristiche principali di V3

Vettori di cancellazione

Sostituisce i file di eliminazione posizionale di V2 con un formato binario efficiente archiviato come file Puffin. Ciò elimina l'amplificazione della scrittura dovuta agli aggiornamenti casuali in batch e alle eliminazioni in conformità al GDPR, riducendo in modo significativo il sovraccarico legato al mantenimento 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.

Row-Lineage

Consente il 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

V3 mantiene la compatibilità con le versioni precedenti con le tabelle V2. AWS i servizi supportano contemporaneamente le tabelle V2 e V3, consentendo di:

  • Esegui query su entrambe le tabelle V2 e V3

  • Aggiorna le tabelle V2 esistenti alla V3 senza riscritture dei dati

  • Esegui query sui viaggi nel tempo che riguardano istantanee V2 e V3

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

Importante

V3 è un aggiornamento unidirezionale. Una volta aggiornata una tabella da V2 a V3, non può essere ripristinata alla V2 tramite operazioni standard.

Guida introduttiva alla V3

Prerequisiti

Prima di utilizzare le tabelle V3, assicurati di disporre di:

  • Un AWS account con autorizzazioni IAM appropriate

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

  • Un bucket S3 per archiviare dati di tabelle e metadati

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

  • AWS Catalogo Glue configurato

Creazione di tabelle V3

Creazione di nuove tabelle V3

Per creare una nuova tabella Iceberg V3, imposta la proprietà della tabella format-version 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 V2 a V3

È possibile aggiornare le tabelle V2 esistenti a V3 atomicamente senza riscrivere i dati.

Usando Spark SQL:

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

V3 è un aggiornamento unidirezionale. Una volta aggiornata una tabella da V2 a V3, non può essere ripristinata alla V2 tramite operazioni standard.

Cosa succede durante l'aggiornamento:

  • Una nuova istantanea dei metadati viene creata atomicamente

  • I file di dati di Parquet esistenti vengono riutilizzati

  • I campi Row-Lineage vengono aggiunti ai metadati della tabella

  • La prossima compattazione rimuoverà i vecchi file di eliminazione V2

  • Le nuove modifiche utilizzeranno i file Deletion Vector di V3

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

Abilitazione dei vettori di cancellazione

Per sfruttare i vettori di cancellazione 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 Deletion Vector invece di riscrivere interi file di dati.

Sfruttare Row-Lineage per il monitoraggio delle modifiche

V3 aggiunge automaticamente i campi di metadati Row-Lineage 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 campo _row_id identifica in modo univoco ogni riga, mentre _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 V3

Prendi in considerazione l'aggiornamento o l'avvio da V3 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

  • Avete bisogno di flussi di lavoro CDC efficienti

  • Desiderate ridurre i costi di archiviazione derivanti da file di piccole dimensioni

  • Avete 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

  • Sfrutta 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

Durante la migrazione dalla V2 alla V3:

  • Esegui prima il test in ambienti non di produzione: convalida il processo di aggiornamento e le prestazioni

  • Aggiornamento durante i periodi di bassa attività: riduzione al minimo dell'impatto sulle operazioni simultanee

  • Monitora le prestazioni iniziali: monitora le metriche dopo l'aggiornamento

  • Esegui la compattazione: consolida i file eliminati dopo l'aggiornamento

  • Aggiorna la documentazione: le funzionalità di Reflect V3 nella documentazione del team

Considerazioni sulla compatibilità

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

  • Strumenti di terze parti: verifica la compatibilità con la V3 prima dell'aggiornamento

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

  • Monitoraggio: aggiorna i dashboard di monitoraggio per metriche specifiche della V3

Risoluzione dei problemi

Problemi comuni

Errore: «la versione di formato 3 non è supportata»
  • Verifica che la versione del tuo motore supporti la V3

    Il supporto V3 per AWS i servizi Amazon è il seguente:

    Servizio Supporto V3
    EMR Spark Versione 7.12+
    AWS Glue ETL
    Notebook Amazon SageMaker Unified Studio
    AWS Glue: API REST Iceberg, manutenzione delle tabelle
    Tabelle Amazon S3: API REST Iceberg, manutenzione delle tabelle
    Amazon Athena (Torino) No
  • Verifica la compatibilità del catalogo

  • Garantisci le versioni più recenti AWS del servizio

Degrado delle prestazioni dopo l'aggiornamento
  • Verificare che non vi siano errori di compattazione. Per maggiori dettagli, consulta Registrazione e monitoraggio per le tabelle S3.

  • Controlla se i vettori di cancellazione sono abilitati. Assicurati che siano impostate 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 strategia di partizione. Un partizionamento eccessivo può portare a file di piccole dimensioni. Esegui la query seguente 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
  • Lo strumento di verifica supporta le specifiche V3

  • Prendi in considerazione la possibilità di mantenere le tabelle V2 per gli strumenti non supportati

  • Contatta il fornitore degli strumenti per conoscere la tempistica del supporto V3

Utilizzo della Guida

  • AWS Assistenza: contatta l' AWS assistenza per problemi specifici del servizio

  • Comunità Apache Iceberg: Iceberg Slack

  • AWS Documentazione: Documentazione di analisi AWS

Prezzi

Disponibilità

Il supporto per Apache Iceberg V3 è disponibile in tutte le regioni in AWS cui operano Amazon EMR, Glue AWS Data Catalog, Glue ETL e S3 Tables. AWS

Risorse aggiuntive