

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation des niveaux de compression ZSTD
<a name="compression-support-zstd-levels"></a>

L’[algorithme de compression de données en temps réel Zstandard](http://facebook.github.io/zstd/) est un algorithme de compression rapide qui fournit des taux de compression élevés. La bibliothèque Zstandard est un logiciel open source qui utilise une licence BSD. Athena prend en charge la lecture et l’écriture de données ORC, Parquet et de fichiers texte compressés selon la norme ZSTD.

Vous pouvez utiliser les niveaux de compression ZSTD pour ajuster le taux et la vitesse de compression en fonction de vos besoins. La bibliothèque ZSTD prend en charge des niveaux de compression compris entre 1 et 22. Athena utilise le niveau de compression ZSTD 3 par défaut.

Les niveaux de compression offrent des compromis précis entre la vitesse de compression et le niveau de compression atteint. Des niveaux de compression plus faibles offrent une vitesse plus importante, mais des fichiers de plus grande taille. Par exemple, vous pouvez utiliser le niveau 1 si la vitesse est la plus importante et le niveau 22 si la taille est la plus importante. Le niveau 3 convient à de nombreux cas d’utilisation et constitue le niveau par défaut. Utilisez les niveaux supérieurs à 19 avec prudence, car ils nécessitent plus de mémoire. La bibliothèque ZSTD propose également des niveaux de compression négatifs qui étendent la plage de vitesses et de taux de compression. Pour plus d’informations, consultez le [RFC de compression Zstandard](https://datatracker.ietf.org/doc/html/rfc8478).

L’abondance de niveaux de compression offre de nombreuses possibilités de réglage précis. Toutefois, assurez-vous de mesurer vos données et de prendre en compte les compromis lorsque vous décidez d’un niveau de compression. Nous vous recommandons d’utiliser le niveau 3 par défaut ou un niveau compris entre 6 et 9 pour obtenir un compromis raisonnable entre la vitesse de compression et la taille des données compressées. Réservez les niveaux 20 et plus pour les cas où la taille est la plus importante et où la vitesse de compression n’est pas un problème.

## Considérations et restrictions
<a name="compression-support-zstd-levels-considerations-and-limitations"></a>

Lorsque vous utilisez le niveau de compression ZSTD dans Athena, tenez compte des points suivants.
+ La propriété `compression_level` ZSTD est prise en charge uniquement dans la version 3 du moteur Athena.
+ La propriété `compression_level` ZSTD est prise en charge pour les instructions `ALTER TABLE`, `CREATE TABLE`, `CREATE TABLE AS` (CTAS) et `UNLOAD`.
+ La propriété `compression_level` est facultative.
+ La propriété `compression_level` est prise en charge uniquement pour la compression ZSTD.
+ Les niveaux de compression possibles sont compris entre 1 et 22.
+ Le niveau de compression par défaut est le niveau 3.

Pour de plus amples informations sur la prise en charge de la compression ZSTD Apache Hive dans Athena, consultez [Utilisation de la compression des tables Hive](compression-support-hive.md). Pour de plus amples informations sur la prise en charge de la compression ZSTD Apache Iceberg dans Athena, consultez [Utilisation de la compression des tables Iceberg](compression-support-iceberg.md).

## Spécification des niveaux de compression ZSTD
<a name="compression-support-zstd-levels-specifying"></a>

Pour spécifier le niveau de compression ZSTD pour les instructions `ALTER TABLE`, `CREATE TABLE`, `CREATE TABLE AS` et `UNLOAD`, utilisez la propriété `compression_level`. Pour spécifier la compression ZSTD elle-même, vous devez utiliser la propriété de compression individuelle utilisée par la syntaxe de l’instruction.

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

Dans la clause `SET TBLPROPERTIES` de l’instruction [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md), spécifiez la compression ZSTD à l’aide de `'write.compression' = ' ZSTD'` ou de `'parquet.compression' = 'ZSTD'`. Utilisez ensuite la propriété `compression_level` pour spécifier une valeur comprise entre 1 et 22 (par exemple, ’`compression_level' = '5'`). Si vous ne spécifiez aucune propriété de niveau de compression, le niveau de compression est défini par défaut sur 3.

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

L’exemple suivant modifie la table `existing_table` pour utiliser le format de fichier Parquet avec une compression ZSTD et un niveau de compression ZSTD 4. Notez que dans la clause `TBLPROPERTIES`, la valeur de niveau de compression doit être saisie sous la forme d’une chaîne plutôt que d’un entier et doit donc être placée entre guillemets simples ou doubles.

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

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

Dans la clause `TBLPROPERTIES` de l’instruction [CREATE TABLE](create-table.md), spécifiez '`write.compression' = 'ZSTD'` ou `'parquet.compression' = 'ZSTD'`, puis utilisez `compression_level = compression_level` et spécifiez une valeur comprise entre 1 et 22 sous la forme d’une chaîne. Si la propriété `compression_level` n’est pas spécifiée, le niveau de compression par défaut est 3.

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

L’exemple suivant crée un tableau au format de fichier Parquet à l’aide de la compression ZSTD et du niveau de compression 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>

Dans la clause `WITH` de l’instruction [CREATE TABLE AS](create-table-as.md), spécifiez `write_compression = 'ZSTD'` ou `parquet_compression = 'ZSTD'`, puis utilisez `compression_level = compression_level` et spécifiez une valeur comprise entre 1 et 22 sous la forme d’un entier. Si la propriété `compression_level` n’est pas spécifiée, le niveau de compression par défaut est 3.

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

L’exemple CTAS suivant spécifie Parquet comme format de fichier utilisant la compression ZSTD avec un niveau de compression 4. Notez que dans la clause `WITH`, la valeur de niveau de compression doit être spécifiée sous la forme d’un entier, et non sous la forme d’une chaîne.

```
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>

Dans la clause `WITH` de l’instruction [UNLOAD](unload.md), spécifiez `compression = 'ZSTD'`, puis utilisez `compression_level = compression_level` et spécifiez une valeur comprise entre 1 et 22 sous la forme d’un entier. Si la propriété `compression_level` n’est pas spécifiée, le niveau de compression par défaut est 3.

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

L’exemple suivant décharge les résultats de la requête vers l’emplacement spécifié à l’aide du format de fichier Parquet, de la compression ZSTD et du niveau de compression ZSTD 4.

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