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 ZSTD de compression
L’algorithme de compression de données en temps réel Zstandard
Vous pouvez utiliser les niveaux ZSTD de compression pour ajuster le taux de compression et la vitesse en fonction de vos besoins. La ZSTD bibliothèque prend en charge les niveaux de compression compris entre 1 et 22. Athena utilise le niveau ZSTD de compression 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 ZSTD bibliothèque propose également des niveaux de compression négatifs qui étendent la plage de vitesses et de ratios de compression. Pour plus d'informations, consultez la section Compression RFC 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 ZSTD compression dans Athena, tenez compte des points suivants.
-
La ZSTD
compression_level
propriété n'est prise en charge que dans la version 3 du moteur Athena. -
La ZSTD
compression_level
propriété est prise en charge pour lesUNLOAD
instructionsALTER TABLE
CREATE TABLE
,,CREATE TABLE AS
(CTAS) et. -
La propriété
compression_level
est facultative. -
La
compression_level
propriété est prise en charge uniquement pour ZSTD la compression. -
Les niveaux de compression possibles sont compris entre 1 et 22.
-
Le niveau de compression par défaut est le niveau 3.
Pour plus d'informations sur la prise en charge de la ZSTD compression par Apache Hive dans Athena, consultez. Utiliser la compression de table Hive Pour plus d'informations sur la prise en charge de la ZSTD compression par Apache Iceberg dans Athena, consultez. Utiliser la compression de table Iceberg
Spécifier les niveaux ZSTD de compression
Pour spécifier le niveau ZSTD de compression des UNLOAD
instructionsALTER TABLE
,, et CREATE
TABLE
CREATE TABLE AS
,,,,,, utilisez la compression_level
propriété. Pour spécifier ZSTD la compression elle-même, vous devez utiliser la propriété de compression individuelle utilisée par la syntaxe de l'instruction.
Dans la SET
TBLPROPERTIES
clause d'ALTER TABLE SET
TBLPROPERTIESinstruction, spécifiez la ZSTD compression à l'aide de 'write.compression' = ' ZSTD'
ou'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 le tableau existing_table
pour utiliser le format de fichier Parquet avec ZSTD compression et niveau ZSTD de compression 4. Notez que dans la TBLPROPERTIES
clause, la valeur du niveau de compression doit être saisie sous forme de chaîne plutôt que 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 en utilisant ZSTD la compression et le niveau ZSTD de compression 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'CTASexemple suivant indique Parquet comme format de fichier utilisant la ZSTD compression avec le 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 à l'emplacement spécifié en utilisant le format de fichier Parquet, la ZSTD compression et le niveau ZSTD de compression 4.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)