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.
Utiliser les niveaux de compression ZSTD
L’algorithme de compression de données en temps réel Zstandard
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
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
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 instructionsALTER TABLE
,CREATE TABLE
,CREATE TABLE AS
(CTAS) etUNLOAD
. -
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 Utiliser la compression de table Hive. Pour de plus amples informations sur la prise en charge de la compression ZSTD Apache Iceberg dans Athena, consultez Utiliser la compression de table Iceberg.
Spécifier les niveaux de compression ZSTD
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.
Dans la clause SET
TBLPROPERTIES
de l’instruction ALTER TABLE SET
TBLPROPERTIES, 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
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 TBLPROPERTIES
clause, la valeur du niveau de compression doit être saisie sous forme de chaîne plutôt que sous forme d'entier et doit donc être placée entre guillemets simples ou doubles.
ALTER TABLE existing_table SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')
Dans la TBLPROPERTIES
clause d'CREATE TABLEinstruction, spécifiez « write.compression' =
'ZSTD'
ou »'parquet.compression' = 'ZSTD'
, puis utilisez compression_level =
et spécifiez une valeur comprise entre 1 et 22 sous forme de chaîne. Si la propriété compression_level
compression_level
n’est pas spécifiée, le niveau de compression par défaut est 3.
exemple
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')
Dans la WITH
clause d'CREATE TABLE ASinstructionwrite_compression = 'ZSTD'
, spécifiez ouparquet_compression = 'ZSTD'
, puis utilisez compression_level
=
et spécifiez une valeur comprise entre 1 et 22 sous forme d'entier. Si la propriété compression_level
compression_level
n’est pas spécifiée, le niveau de compression par défaut est 3.
exemple
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 WITH
clause, la valeur du niveau de compression doit être spécifiée sous forme d'entier, et non sous forme de chaîne.
CREATE TABLE new_table WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4) AS SELECT * FROM old_table
Dans la WITH
clause d'UNLOADinstruction, spécifiezcompression = 'ZSTD'
, puis utilisez compression_level =
et spécifiez une valeur comprise entre 1 et 22 sous forme d'entier. Si la propriété compression_level
compression_level
n’est pas spécifiée, le niveau de compression par défaut est 3.
exemple
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)