Utilisation de la compression dans Athena
Athena prend en charge divers formats de compression pour la lecture et l'écriture de données, y compris la lecture d'une table qui utilise plusieurs formats de compression. Par exemple, Athena peut lire avec succès les données d’une table qui utilise le format de fichier Parquet lorsque certains fichiers Parquet sont compressés avec Snappy et d’autres fichiers Parquet sont compressés avec GZIP. Le même principe s’applique aux formats de stockage ORC, fichier texte et JSON.
Athena prend en charge les formats de compression suivants :
-
BZPI2 – Format qui utilise l'algorithme Burrows-Wheeler.
-
DEFLATE – Algorithme de compression basé sur LZSS
et sur le codage Huffman . Deflate n'est pertinent que pour le format de fichier Avro. -
GZIP – Algorithme de compression basé sur Deflate. Pour les tables Hive dans les versions 2 et 3 du moteur Athena, et les tables Iceberg dans la version 2 du moteur Athena, GZIP est le format de compression d’écriture par défaut des fichiers aux formats de stockage de fichier texte et Parquet. Les fichiers au format
tar.gzne sont pas pris en charge. -
LZ4 – Ce membre de la famille Lempel-Ziv 77 (LZ7) se concentre également sur la vitesse de compression et de décompression plutôt que sur la compression maximale des données. LZ4 possède les formats de cadrage suivants :
-
LZ4 Raw/Unframed (Brut/Non cadré) – Une implémentation standard, sans cadre, du format de compression de blocs LZ4. Pour plus d'informations, consultez l'article LZ4 block format description
(description de format de bloc LZ4) sur GitHub. -
LZ4 cadré – L'implémentation habituelle tramée de LZ4. Pour plus d'informations, consultez l'article LZ4 frame format description
(description de format de cadre LZ4) sur GitHub. -
Compatible Hadoop LZ4 – L'implémentation Apache Hadoop de LZ4. Cette implémentation encapsule la compression LZ4 avec la classe BlockCompressorStream.java
.
-
-
LZO – Format utilisant l'algorithme Lempel–Ziv–Oberhumer, qui se concentre sur une vitesse de compression et de décompression élevée plutôt que sur la compression maximale des données. LZO a deux implémentations :
-
LZO standard – Pour en savoir plus sur, consultez le résumé
LZO sur le site web d'Oberhumer. -
Compatible LZO Hadoop – Cette implémentation encapsule l'algorithme LZO avec la classe BlockCompressorStream.java
.
-
-
SNAPPY – Algorithme de compression faisant partie de la famille Lempel-Ziv 77 (LZ7). Snappy met l'accent sur une vitesse de compression et de décompression élevée plutôt que sur la compression maximale des données.
-
ZLIB – Basé sur Deflate, ZLIB est le format de compression en écriture par défaut pour les fichiers au format de stockage de données ORC. Pour plus d'informations, consultez la page zlib
sur GitHub. -
ZSTD – 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 (ZSTD) est fournie sous forme de logiciel open source utilisant une licence BSD. ZSTD est la compression par défaut pour les tables Iceberg. Lors de l’écriture de données compressées ZSTD, Athena utilise par défaut le niveau 3 de compression ZSTD. Pour plus d’informations sur l’utilisation des niveaux de compression ZSTD dans Athena, consultez Utilisation des niveaux de compression ZSTD.
Note
Athena ne prend pas en charge l’écriture de fichiers Parquet compressés aux formats LZ4 ou LZO. La lecture de ces formats de compression est prise en charge.
Spécification de formats de compression
Lorsque vous écrivez des instructions CREATE TABLE ou CTAS, vous pouvez spécifier des propriétés de compression qui précisent le type de compression à utiliser lorsque Athena écrit dans ces tables.
-
Pour CTAS, consultez Propriétés de la table CTAS. Pour obtenir des exemples, veuillez consulter Exemples de requêtes CTAS.
-
Pour CREATE TABLE, consultez ALTER TABLE SET TBLPROPERTIES pour obtenir la liste des propriétés de la table de compression.
Spécification de l’absence de compression
Les instructions CREATE TABLE prennent en charge l'écriture de fichiers non compressés. Pour écrire des fichiers non compressés, utilisez la syntaxe suivante :
-
CREATE TABLE (fichier texte ou JSON) — Dans
TBLPROPERTIES, spécifiezwrite.compression = NONE. -
CREATE TABLE (Parquet) — Dans
TBLPROPERTIES, spécifiezparquet.compression = UNCOMPRESSED. -
CREATE TABLE (ORC) — Dans
TBLPROPERTIES, spécifiezorc.compress = NONE.
Remarques et ressources
-
Actuellement, les extensions de fichier en majuscules telles que
.GZou.BZIP2ne sont pas reconnues par Athena. Évitez d'utiliser des jeux de données avec des extensions de fichier en majuscules ou renommez les extensions des fichiers de données en minuscules. -
Pour des données aux formats CSV, TSV et JSON, Athena détermine le type de compression à partir de l'extension de fichier. Si aucune extension de fichier n'est présente, Athena traite les données comme du texte brut non compressé. Si vos données sont compressées, assurez-vous que le nom de fichier comprend l'extension de compression, par exemple
gz. -
Le format de fichier ZIP n'est pas pris en charge.
-
Dans le cadre de l’interrogation des journaux Amazon Data Firehose depuis Athena, les formats pris en charge incluent la compression GZIP ou les fichiers ORC avec compression SNAPPY.
-
Pour plus d'informations sur l'utilisation de la compression, consultez la section 3 « Compress and split files » (Compresser et fractionner les fichiers) du billet de blog AWS Big Data Top 10 Performance Tuning Tips for Amazon Athena
(Les 10 meilleurs conseils de réglage des performances pour Amazon Athena).