

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

# Usa i livelli di compressione ZSTD
<a name="compression-support-zstd-levels"></a>

L'[algoritmo di compressione dei dati in tempo reale Zstandard](http://facebook.github.io/zstd/) è un algoritmo di compressione veloce che fornisce rapporti di compressione elevati. La libreria Zstandard (ZSTD) è un software open source e utilizza una licenza BSD. Athena supporta la lettura e la scrittura di dati compressi ZSTD ORC, Parquet e file di testo.

È possibile utilizzare i livelli di compressione ZSTD per regolare il rapporto di compressione e la velocità in base alle proprie esigenze. La libreria ZSTD supporta livelli di compressione da 1 a 22. Per impostazione predefinita, Athena utilizza il livello di compressione ZSTD 3.

I livelli di compressione forniscono compromessi granulari tra la velocità di compressione e la quantità di compressione raggiunta. Livelli di compressione più bassi offrono una maggiore velocità ma file di dimensioni maggiori. Ad esempio, puoi usare il livello 1 se la velocità è più importante e il livello 22 se invece è più importante la dimensione. Il livello 3 è adatto a numerosi casi d'uso ed è l'impostazione predefinita. Usa i livelli superiori a 19 con cautela poiché richiedono più memoria. La libreria ZSTD offre anche livelli di compressione negativi che estendono la gamma di velocità e rapporti di compressione. Per ulteriori informazioni, consulta [RFC di compressione Zstandard](https://datatracker.ietf.org/doc/html/rfc8478).

L'abbondanza di livelli di compressione offre notevoli opportunità per una regolazione precisa. Tuttavia, quando decidi il livello di compressione assicurati di misurare i tuoi dati e di prendere in considerazione dei compromessi. Si consiglia di utilizzare il livello predefinito 3 o un livello compreso tra 6 e 9 per un ragionevole compromesso tra velocità di compressione e dimensione dei dati compressi. Utilizza i livelli pari o superiori a 20 per i casi in cui le dimensioni sono più importanti e la velocità di compressione non è un problema.

## Considerazioni e limitazioni
<a name="compression-support-zstd-levels-considerations-and-limitations"></a>

Quando utilizzi un livello di compressione ZSTD in Athena, considera i seguenti punti.
+ La proprietà `compression_level` ZSTD è supportata solo nella versione 3 del motore Athena.
+ La proprietà `compression_level` ZSTD è supportata per le istruzioni`ALTER TABLE`, `CREATE TABLE`, `CREATE TABLE AS` (CTAS) e `UNLOAD`.
+ La proprietà `compression_level` è facoltativa.
+ La proprietà `compression_level` è supportata solo per la compressione ZSTD.
+ I livelli di compressione possibili sono compresi tra 1 e 22.
+ Il livello di compressione predefinito è 3.

Per informazioni sul supporto della compressione Apache Hive ZSTD in Athena, consulta [Usa la compressione delle tabelle Hive](compression-support-hive.md). Per informazioni sul supporto della compressione Apache Iceberg ZSTD in Athena, consulta [Usa la compressione delle tabelle Iceberg](compression-support-iceberg.md).

## Specifica i livelli di compressione ZSTD
<a name="compression-support-zstd-levels-specifying"></a>

Per specificare il livello di compressione ZSTD per le istruzioni`ALTER TABLE`, `CREATE TABLE`, `CREATE TABLE AS` e `UNLOAD`, utilizza la proprietà `compression_level`. Per specificare la compressione ZSTD stessa, è necessario utilizzare la singola proprietà di compressione utilizzata dalla sintassi dell'istruzione.

### ALTER TABLE SET TBLPROPERTIES
<a name="compression-support-zstd-levels-alter-table"></a>

Nella clausola `SET TBLPROPERTIES` dell'istruzione [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md), specifica la compressione ZSTD utilizzando `'write.compression' = ' ZSTD'` o `'parquet.compression' = 'ZSTD'`. Quindi utilizza la proprietà `compression_level` per specificare un valore compreso tra 1 e 22 (ad esempio, '`compression_level' = '5'`). Se non si specifica una proprietà del livello di compressione, il livello di compressione predefinito sarà 3.

#### Esempio
<a name="compression-support-zstd-levels-alter-table-example"></a>

L'esempio seguente modifica la tabella `existing_table` per utilizzare il formato file Parquet con compressione ZSTD e livello di compressione ZSTD 4. Nota che nella clausola `TBLPROPERTIES` il valore del livello di compressione deve essere immesso come stringa anziché come numero intero e pertanto deve essere racchiuso tra virgolette singole o doppie.

```
ALTER TABLE existing_table 
SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')
```

### CREATE TABLE
<a name="compression-support-zstd-levels-create-table"></a>

Nella clausola `TBLPROPERTIES` dell’istruzione [CREATE TABLE](create-table.md), specifica ’`write.compression' = 'ZSTD'` o `'parquet.compression' = 'ZSTD'`, quindi utilizza `compression_level = compression_level` e specifica un valore compreso tra 1 e 22 come stringa. Se la proprietà `compression_level` non viene specificata, il livello di compressione predefinito sarà 3.

#### Esempio
<a name="compression-support-zstd-levels-create-table-example"></a>

L'esempio seguente crea una tabella nel formato file Parquet con compressione ZSTD e livello di compressione ZSTD 4. 

```
CREATE EXTERNAL TABLE new_table ( 
  `col0` string COMMENT '', 
  `col1` string COMMENT '' 
) 
STORED AS PARQUET 
LOCATION 's3://amzn-s3-demo-bucket/' 
TBLPROPERTIES ('write.compression' = 'ZSTD', 'compression_level' = '4')
```

### CREATE TABLE AS (CTAS)
<a name="compression-support-zstd-levels-ctas"></a>

Nella clausola `WITH` dell’istruzione [CREATE TABLE AS](create-table-as.md), specifica `write_compression = 'ZSTD'` o `parquet_compression = 'ZSTD'`, quindi utilizza `compression_level = compression_level` e specifica un valore compreso tra 1 e 22 come numero intero. Se la proprietà `compression_level` non viene specificata, il livello di compressione predefinito sarà 3.

#### Esempio
<a name="compression-support-zstd-levels-ctas-example"></a>

L'esempio CTAS seguente specifica Parquet come formato file con compressione ZSTD e livello di compressione ZSTD 4. Si noti che, nella clausola `WITH`, il valore del livello di compressione deve essere specificato come numero intero, non come stringa.

```
CREATE TABLE new_table  
WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4)  
AS SELECT * FROM old_table
```

### UNLOAD
<a name="compression-support-zstd-levels-unload"></a>

Nella clausola `WITH` dell’istruzione [UNLOAD](unload.md), specifica `compression = 'ZSTD'`, quindi utilizza `compression_level = compression_level` e specifica un valore compreso tra 1 e 22 come numero intero. Se la proprietà `compression_level` non viene specificata, il livello di compressione predefinito sarà 3.

#### Esempio
<a name="compression-support-zstd-levels-unload-example"></a>

L'esempio seguente scarica i risultati della query nella posizione specificata utilizzando il formato file Parquet, la compressione ZSTD e il livello di compressione ZSTD 4.

```
UNLOAD (SELECT * FROM old_table) 
TO 's3://amzn-s3-demo-bucket/' 
WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)
```