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 tabellare Apache Iceberg, che introduce funzionalità avanzate per la creazione di data lake su scala petabyte con prestazioni migliorate e costi operativi ridotti. La V3 risolve i problemi di prestazioni più comuni riscontrati con la versione 2 (V2), in particolare per quanto riguarda gli aggiornamenti in batch e le eliminazioni della conformità.
AWS fornisce supporto per i vettori di eliminazione, la derivazione delle righe e il tipo di dati delle varianti come definito nella specifica Apache Iceberg Version 3 (V3). Puoi utilizzare queste funzionalità con Apache Spark su Amazon EMR, Glue ETL, Amazon SageMaker Unified Studio Notebooks e le tabelle Apache Iceberg in AWS Glue Data Catalog, incluse le tabelle Amazon S3. AWS https://aws.amazon.com/s3/features/tables/
Caratteristiche principali di V3
- Vettori di cancellazione
-
Sostituisce i file di eliminazione posizionale di V2 con un efficiente formato binario archiviato come file Puffin. Ciò elimina l'amplificazione della scrittura dovuta agli aggiornamenti in batch casuali e alle eliminazioni conformi al GDPR, riducendo in modo significativo il sovraccarico legato al mantenimento di dati aggiornati. Le organizzazioni che elaborano aggiornamenti ad alta frequenza vedranno miglioramenti immediati nelle prestazioni di scrittura e costi di archiviazione ridotti grazie a un minor numero di file di piccole dimensioni.
- Row-lineage
-
Consente un monitoraggio preciso delle modifiche a livello di riga. I sistemi downstream possono elaborare le modifiche in modo incrementale, velocizzando le pipeline di dati e riducendo i costi di calcolo per i flussi di lavoro CDC (Change Data Capture). Questa funzionalità integrata elimina la necessità di implementazioni personalizzate per il monitoraggio delle modifiche.
- Tipo di dati variante
-
Con il tipo di dati variante, puoi scrivere dati semistrutturati come JSON direttamente nelle tabelle Iceberg senza definire in anticipo uno schema fisso. I motori compatibili con V3 suddividono i dati semistrutturati in colonne nascoste mentre li scrivi, generando statistiche sulle colonne Parquet che i motori di query utilizzano per ottimizzazioni come l'eliminazione dei file. Ciò riduce i dati scansionati dalle query analitiche. S3 Tables fornisce una manutenzione continua delle tabelle per le colonne delle varianti, inclusa la compattazione, in modo da poter consolidare i dati provenienti da fonti semistrutturate in file più grandi che i motori Iceberg possono leggere in modo efficiente.
Compatibilità delle versioni
La V3 mantiene la retrocompatibilità con le tabelle V2. AWS i servizi supportano contemporaneamente le tabelle V2 e V3, consentendoti di:
-
Esegui query su entrambe le tabelle V2 e V3
-
Aggiorna le tabelle V2 esistenti a V3 senza riscrittura dei dati
-
Esegui query sui viaggi nel tempo che comprendono istantanee V2 e V3
-
Usa l'evoluzione dello schema e il partizionamento nascosto tra le versioni delle tabelle
Importante
La 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 lavorare con le tabelle V3, assicurati di avere:
-
Un AWS account con le 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 l'archiviazione di dati e metadati delle tabelle
-
Un table bucket per iniziare a usare S3 Tables o un bucket S3 generico se stai creando 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à 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 da V2 a V3
È possibile aggiornare le tabelle V2 esistenti alla V3 atomicamente senza riscrivere i dati.
Usando Spark SQL:
ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
Importante
La 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 Parquet esistenti vengono riutilizzati
-
Row-lineage i campi 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 backfill cronologico dei record di tracciamento delle modifiche alla derivazione delle righe
Abilitazione dei vettori di cancellazione
Per sfruttare i vettori di eliminazione per aggiornamenti, eliminazioni e fusioni, 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 cancellazione invece di riscrivere interi file di dati.
Utilizzo Row-lineage del monitoraggio delle modifiche
V3 aggiunge automaticamente 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 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 la conformità
-
Ottimizza le pipeline CDC
-
Riduci i costi di elaborazione elaborando solo le modifiche
Utilizzo del tipo di dati della variante
Importante
Il tipo di dati della variante è disponibile solo in AWS regioni specifiche. Per l'elenco completo delle regioni supportate, consultaDisponibilità.
Con il tipo di dati variante, puoi scrivere dati semistrutturati come JSON direttamente nelle tue tabelle Iceberg senza definire in anticipo uno schema fisso. È possibile scrivere dati più velocemente ottenendo allo stesso tempo prestazioni efficienti delle query analitiche. I motori compatibili con Iceberg V3 suddividono i dati semistrutturati in colonne nascoste mentre li scrivi. Queste colonne nascoste generano statistiche sulle colonne Parquet che i motori di query utilizzano per ottimizzazioni come l'eliminazione dei file.
Creazione di una tabella con una colonna variante utilizzando Spark SQL:
CREATE TABLE IF NOT EXISTS myns.events ( event_id bigint, event_timestamp timestamp, source string, event_data VARIANT ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )
Inserimento di dati semistrutturati nella colonna variante:
INSERT INTO myns.events VALUES ( 1, current_timestamp(), 'web-app', PARSE_JSON('{"user_id": "u-1234", "action": "page_view", "page": "/products", "duration_ms": 350}') ); INSERT INTO myns.events VALUES ( 2, current_timestamp(), 'mobile-app', PARSE_JSON('{"user_id": "u-5678", "action": "purchase", "items": [{"sku": "A100", "qty": 2}], "total": 49.99}') );
Con S3 Tables, la manutenzione delle tabelle per le colonne delle varianti, inclusa la compattazione, viene eseguita automaticamente. La compattazione consolida i dati provenienti da fonti semistrutturate da file di piccole dimensioni in file più grandi che i motori Iceberg possono leggere in modo più efficiente, migliorando le prestazioni delle query nel tempo.
Le migliori pratiche per la versione V3
Quando usare V3
Prendi in considerazione l'aggiornamento o l'avvio con V3 quando:
-
Si eseguono aggiornamenti o eliminazioni in batch frequenti
-
Devi soddisfare i requisiti del GDPR o di conformità all'eliminazione
-
I tuoi carichi di lavoro comportano interruzioni ad alta frequenza
-
Sono necessari flussi di lavoro CDC efficienti
-
Desiderate ridurre i costi di archiviazione dovuti a file di piccole dimensioni
-
Hai bisogno di migliori funzionalità di tracciamento delle modifiche
Ottimizzazione delle prestazioni di scrittura
-
Abilita i vettori di cancellazione per carichi di lavoro ad alto contenuto di aggiornamenti:
SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' ) -
Configura le dimensioni appropriate dei file:
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 da V2 a V3:
-
Esegui prima il test in modalità non di produzione: convalida del processo di aggiornamento e delle prestazioni
-
Aggiornamento durante i periodi di bassa attività: riduzione al minimo dell'impatto sulle operazioni simultanee
-
Monitoraggio delle prestazioni iniziali: monitoraggio delle metriche dopo l'aggiornamento
-
Esegui la compattazione: consolida i file eliminati dopo l'aggiornamento
-
Aggiorna la documentazione: riflette le funzionalità di V3 nella documentazione del team
Considerazioni sulla compatibilità
-
Versioni del motore: assicurati che tutti i motori che accedono alla tabella supportino V3
-
Third-party strumenti - Verifica la compatibilità con V3 prima dell'aggiornamento
-
Strategia di backup: verifica le procedure di ripristino basate su istantanee
-
Monitoraggio: aggiorna le dashboard di monitoraggio per le metriche V3-specific
Considerazioni sulla compattazione
Per impostazione predefinita, Compaction scrive file varianti di Parquet triturati. I lettori meno recenti che non supportano la distruzione potrebbero non riuscire a leggere i file compressi. È possibile disattivare la distruzione impostando la proprietà della tabella. write.variant.shredding.enabled=false
Risoluzione dei problemi
Problemi comuni
- Errore: «la versione del formato 3 non è supportata»
-
-
Controlla il catalogo del tuo motore di ricerca per verificare la compatibilità con Iceberg V3.
-
Assicurati di utilizzare le versioni più recenti del AWS servizio.
-
Verifica che la versione del tuo motore supporti la versione V3
Il supporto V3 per i AWS servizi Amazon è il seguente:
Servizio Supporto V3 Supporto per le varianti V3 EMR Spark Versione 7.12+ Versione 8.0+ AWS Colla ETL Sì No Notebook Amazon SageMaker Unified Studio Sì No AWS Glue: API REST Iceberg, manutenzione delle tabelle Sì No Tabelle Amazon S3: API REST Iceberg, manutenzione delle tabelle Sì Sì* Amazon Athena (Trino) No No *Disponibilità parziale nella regione
-
- 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. Assicuratevi 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 seguente query per ottenere la dimensione media dei 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
-
Valuta la possibilità di mantenere le tabelle V2 per gli strumenti non supportati
-
Contatta il fornitore degli strumenti per la tempistica del supporto V3
-
Utilizzo della Guida
-
AWS Assistenza: contatta l'assistenza per problemi specifici relativi AWS al servizio
-
Comunità Apache Iceberg: Iceberg Slack
-
AWS Documentazione: Documentazione analitica AWS
Prezzi
-
Amazon EMR: prezzi di elaborazione e storage
-
AWS Glue: Job run e prezzi del Data Catalog
-
Tabelle S3: prezzi per l'archiviazione e le richieste
Disponibilità
Il supporto di Apache Iceberg V3 per i vettori di cancellazione e la derivazione delle righe è disponibile in tutte le AWS regioni in cui operano Amazon EMR, Glue Data Catalog, AWS AWS Glue ETL e S3 Tables.
Il tipo di dati variante in S3 Tables è disponibile nelle seguenti AWS regioni: Stati Uniti orientali (Virginia settentrionale), Stati Uniti orientali (Ohio), Stati Uniti occidentali (Oregon), Asia Pacifico (Mumbai), Asia Pacifico (Seoul), Asia Pacifico (Singapore), Asia Pacifico (Sydney), Asia Pacifico (Tokyo), Canada (Centrale), Europa (Francoforte), Europa (Irlanda), Europa (Londra), Europa (Parigi), Europa (Parigi), Europa (Francoforte), Europa (Irlanda), Europa (Londra), Europa (Parigi), Europa (Stoccolma) e Sud America (San Paolo).