Utilisation des niveaux de compression ZSTD dans Athena - Amazon Athena

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 dans Athena

L’algorithme de compression de données en temps réel Zstandard 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.

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 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 Prise en charge de la compression de la table Hive par format de fichier. Pour de plus amples informations sur la prise en charge de la compression ZSTD Apache Iceberg dans Athena, consultez Prise en charge de la compression de la table Iceberg par format de fichier.

Spécification des 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.

ALTER TABLE SET TBLPROPERTIES

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 la valeur du niveau de compression doit être saisie sous la forme d'une chaîne plutôt que d'un entier.

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

CREATE TABLE

Dans la clause TBLPROPERTIES de l’instruction CREATE TABLE, 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. Si la propriété 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://DOC-EXAMPLE-BUCKET/' TBLPROPERTIES ('write.compression' = 'ZSTD', 'compression_level' = 4)

CREATE TABLE AS (CTAS)

Dans la clause WITH de l’instruction CREATE TABLE AS, spécifiez write_compression = 'ZSTD' ouparquet_compression = 'ZSTD', puis utilisez compression_level = compression_level et spécifiez une valeur comprise entre 1 et 22. Si la propriété 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.

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

UNLOAD

Dans la clause WITH de l’instruction UNLOAD, spécifiez compression = 'ZSTD', puis utilisez compression_level = compression_level et spécifiez une valeur comprise entre 1 et 22. Si la propriété 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://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)