

# Uso de la compresión en Athena
<a name="compression-formats"></a>

Athena admite una variedad de formatos de compresión para leer y escribir datos, como la lectura de una tabla que utiliza varios formatos de compresión. Por ejemplo, Athena puede leer correctamente los datos de una tabla que utiliza el formato de archivo Parquet cuando algunos archivos Parquet se comprimen con Snappy y otros archivos Parquet se comprimen con GZIP. El mismo principio se aplica a los formatos de almacenamiento ORC, archivo de texto y JSON.

## Formatos de compresión compatibles
<a name="compression-support-formats"></a>

Athena es compatible con los siguientes formatos de compresión:
+ **BZIP2**: formato que utiliza el algoritmo Burrows-Wheeler.
+ **DEFLATE**: algoritmo de compresión basado en [LZSS](https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Storer%E2%80%93Szymanski) y [codificación Huffman](https://en.wikipedia.org/wiki/Huffman_coding). [Deflate](https://en.wikipedia.org/wiki/Deflate) solo es relevante para el formato de archivo Avro.
+ **GZIP**: algoritmo de compresión basado en Deflate. Para las tablas de Hive en las versiones 2 y 3 del motor Athena y las tablas de Iceberg en la versión 2 del motor Athena, GZIP es el formato de compresión de escritura predeterminado para los archivos con formato de almacenamiento de archivo de texto y Parquet. Los archivos con el formato `tar.gz` no son compatibles.
+ **LZ4**: este miembro de la familia Lempel-Ziv 77 (LZ7) también se centra en la velocidad de compresión y descompresión en lugar de la máxima compresión de los datos. LZ4 tiene los siguientes formatos de encuadre:
  + **LZ4 Raw/Unframed** (LZ4 sin formato o sin encuadre): una implementación estándar y sin encuadre del formato de compresión de bloques LZ4. Para obtener más información, consulte [Descripción del formato de bloques LZ4](https://github.com/lz4/lz4/blob/dev/doc/lz4_Block_format.md) en GitHub.
  + **LZ4 framed** (LZ4 con encuadre): la implementación con el encuadre habitual de LZ4. Para obtener más información, consulte [Descripción del formato de encuadre LZ4](https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md) en GitHub.
  + **LZ4 hadoop-compatible** (LZ4 compatible con Hadoop): la implementación con Apache Hadoop de LZ4. Esta implementación completa la compresión LZ4 con la clase [BlockCompressorStream.java](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java).
+ **LZO**: formato que utiliza el algoritmo Lempel–Ziv–Oberhumer, que se centra en la alta velocidad de compresión y descompresión en lugar de la compresión máxima de datos. LZO tiene dos implementaciones:
  + **LZO estándar**: para obtener más información, consulte el [resumen](http://www.oberhumer.com/opensource/lzo/#abstract) sobre LZO en el sitio web de Oberhumer.
  + **LZO hadoop-compatible** (LZO compatible con Hadoop): esta implementación completa el algoritmo de LZO con la clase [BlockCompressorStream.java](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java).
+ **SNAPPY**: algoritmo de compresión que forma parte de la familia Lempel-Ziv 77 (LZ7). Snappy se centra en la alta velocidad de compresión y descompresión en lugar de la máxima compresión de datos.
+ **ZLIB**: basado en Deflate, ZLIB es el formato de compresión de escritura predeterminado para archivos con el formato de almacenamiento de datos ORC. Para obtener más información, consulte la página [zlib](https://github.com/madler/zlib) en GitHub.
+  **ZSTD**: el [algoritmo de compresión de datos en tiempo real Zstandard](http://facebook.github.io/zstd/) es un algoritmo de compresión rápida que proporciona ratios altas de compresión. La biblioteca Zstandard (ZSTD) se proporciona como software de código abierto mediante una licencia BSD. ZSTD es la compresión predeterminada para las tablas de Iceberg. Cuando se escriben datos comprimidos con ZSTD, Athena utiliza el nivel 3 de compresión Zstandard. Para obtener información sobre el uso de los niveles de compresión ZSTD en Athena, consulte [Uso de niveles de compresión de ZSTD](compression-support-zstd-levels.md).

**nota**  
Athena no admite la escritura de archivos Parquet comprimidos con los formatos LZ4 o LZO. La lectura de estos formatos de compresión es compatible.

## Especificación de los formatos de compresión
<a name="compression-support-specifying-compression-formats"></a>

Al escribir instrucciones CREATE TABLE o CTAS, puede especificar las propiedades de compresión que especifican el tipo de compresión que se utilizará cuando Athena escriba en esas tablas.
+ Para CTAS, consulte [Propiedades de la tabla CTAS](create-table-as.md#ctas-table-properties). Para ver ejemplos, consulte [Ejemplos de consultas CTAS](ctas-examples.md).
+ Para obtener información sobre CREATE TABLE, consulte [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md) para obtener una lista de las propiedades de la tabla de compresión.

## Especificación sin compresión
<a name="compression-support-specifying-no-compression"></a>

Las declaraciones CREATE TABLE permiten escribir archivos sin comprimir. Para escribir archivos sin comprimir, utilice la siguiente sintaxis: 
+ CREATE TABLE (archivo de texto o JSON): en `TBLPROPERTIES`, especifique `write.compression = NONE`.
+ CREATE TABLE (Parquet): en `TBLPROPERTIES`, especifique `parquet.compression = UNCOMPRESSED`.
+ CREATE TABLE (ORC): en `TBLPROPERTIES`, especifique `orc.compress = NONE`.

## Notas y recursos
<a name="compression-support-notes-and-resources"></a>
+ Actualmente, Athena no reconoce las extensiones de archivo en mayúsculas, como `.GZ` o `.BZIP2`. Evite utilizar conjuntos de datos con extensiones de archivo en mayúsculas o cambie el nombre de las extensiones de archivo de datos a minúsculas.
+ Para datos en CSV, TSV y JSON, Athena determina el tipo de compresión a partir de la extensión de archivo. Si no hay ninguna extensión de archivo, Athena trata los datos como texto sin formato y sin comprimir. Si los datos están comprimidos, asegúrese de que el nombre de archivo incluye la extensión de compresión como, por ejemplo, `gz`.
+ No se admite el formato de archivo ZIP.
+ Para consultar registros de Amazon Data Firehose desde Athena, los formatos admitidos incluyen la compresión GZIP o archivos ORC con compresión SNAPPY.
+ Para obtener más información sobre el uso de la compresión, consulte la sección 3, (“Comprimir y dividir archivos”), de la publicación del Blog de macrodatos de AWS [Los 10 consejos más importantes sobre el ajuste de rendimiento de Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/).

**Topics**
+ [Especificación de los formatos de compresión](#compression-support-specifying-compression-formats)
+ [Especificación sin compresión](#compression-support-specifying-no-compression)
+ [Notas y recursos](#compression-support-notes-and-resources)
+ [Compresión de tablas de Hive](compression-support-hive.md)
+ [Compresión de tablas de Iceberg](compression-support-iceberg.md)
+ [Niveles de compresión ZSTD](compression-support-zstd-levels.md)