

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
<a name="table-spec-v3"></a>

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<a name="support-table"></a>


| Servizio AWS | Supporto per la versione 3 | 
| --- | --- | 
|  [Amazon EMR per Apache Spark](iceberg-emr.md)  |  Amazon EMR versione 7.12 e successive  | 
|  [AWS Glue](iceberg-glue.md)  |  Sì  | 
|  AWS Glue: [API REST Iceberg](https://docs.aws.amazon.com/glue/latest/dg/connect-glu-iceberg-rest.html), manutenzione delle tabelle  |  Sì  | 
|  [Notebook Amazon SageMaker Unified Studio](https://docs.aws.amazon.com/next-generation-sagemaker/)  |  Sì  | 
|  [Tabelle Amazon S3: [API REST Iceberg](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-open-source.html), manutenzione delle tabelle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance-overview.html)  |  Sì  | 
|  [Amazon Athena (Torino)](https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference-0003.html)  |  No  | 

## Caratteristiche principali della versione 3
<a name="v3-features"></a>

**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
<a name="v3-version-compatibility"></a>

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
<a name="v3-getting-started"></a>

### Prerequisiti
<a name="v3-prerequisites"></a>

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
<a name="v3-creating-tables"></a>

#### Creazione di nuove tabelle
<a name="v3-new-tables"></a>

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
<a name="v3-upgrading-tables"></a>

È 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
<a name="v3-deletion-vector"></a>

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
<a name="v3-deletion-vector"></a>

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
<a name="v3-best-practices"></a>

### Quando usare la versione 3
<a name="v3-when-to-use"></a>

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
<a name="v3-write-performance"></a>
+ 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
<a name="v3-read-performance"></a>
+ 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
<a name="v3-migration"></a>

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à
<a name="v3-compatibility"></a>
+ 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
<a name="v3-troubleshooting"></a>

### Problemi comuni
<a name="v3-common-issues"></a>

**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](#support-table) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-monitoring-overview.html) 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
<a name="v3-help"></a>
+ Per problemi Servizio AWS specifici, contatta. [Supporto AWS](https://aws.amazon.com/contact-us/)
+ Per ricevere assistenza dalla community di Iceberg, usa il canale [Iceberg](https://iceberg.apache.org/community/) Slack.
+ [Per informazioni sull'utilizzo per Servizi AWS gestire i carichi di lavoro di analisi, consulta Analytics on. AWS](https://aws.amazon.com/big-data/datalakes-and-analytics/)

## Prezzi
<a name="v3-pricing"></a>
+ [Prezzi di calcolo e storage di Amazon EMR](https://aws.amazon.com/emr/pricing/)
+ [ SageMakerPrezzi Amazon](https://aws.amazon.com/sagemaker/pricing/)
+ [AWS Glue job run e prezzi di Data Catalog](https://aws.amazon.com/glue/pricing/)
+ [S3 Tables, archiviazione e prezzi delle richieste](https://aws.amazon.com/s3/pricing/)

## Disponibilità
<a name="v3-availability"></a>

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 Catalog[Per la disponibilità per regione, consulta Servizi AWS per regione.](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

## Risorse aggiuntive
<a name="v3-resources"></a>
+ [Documentazione di Apache Iceberg](https://iceberg.apache.org/docs/latest/)
+ [Specifiche della tabella Apache Iceberg](https://iceberg.apache.org/spec/)
+ [Linee guida per la migrazione dei dati tabulari da Amazon S3 a S3 Tables](https://aws.amazon.com/solutions/guidance/migrating-tabular-data-from-amazon-s3-to-s3-tables/)
+ [Tutorial: Guida introduttiva a S3 Tables](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-getting-started.html)