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.
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
y codificación Huffman . 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
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
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
.
-
-
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
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
.
-
-
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
en GitHub. -
ZSTD: el algoritmo de compresión de datos en tiempo real Zstandard
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.
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
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. Para ver ejemplos, consulte Ejemplos de consultas CTAS.
-
Para obtener información sobre CREATE TABLE, consulte ALTER TABLE SET TBLPROPERTIES para obtener una lista de las propiedades de la tabla de compresión.
Especificación sin compresión
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
, especifiquewrite.compression = NONE
. -
CREATE TABLE (Parquet): en
TBLPROPERTIES
, especifiqueparquet.compression = UNCOMPRESSED
. -
CREATE TABLE (ORC): en
TBLPROPERTIES
, especifiqueorc.compress = NONE
.
Notas y recursos
-
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
.