El algoritmo de compresión de datos en tiempo real Zstandard
Puede utilizar los niveles de compresión ZSTD para ajustar la relación y velocidad de compresión de acuerdo con sus requisitos. La biblioteca ZSTD admite niveles de compresión comprendidos entre 1 y 22. Athena utiliza el nivel 3 de compresión ZSTD de manera predeterminada.
Los niveles de compresión permiten conseguir un equilibrio preciso entre la velocidad de compresión y la cantidad de compresión lograda. Los niveles de compresión más bajos proporcionan más velocidad, pero también tamaños de archivo más mayores. Por ejemplo, se puede utilizar el nivel 1 si la velocidad es la prioridad, y el nivel 22 si el tamaño es lo más importante. El nivel 3 es adecuado para muchos casos de uso, y es el predeterminado. Utilice los niveles superiores a 19 con precaución, ya que requieren más memoria. La biblioteca ZSTD también ofrece niveles de compresión negativos que amplían el intervalo de velocidades y relaciones de compresión. Para obtener más información, consulte el documento RFC sobre compresión Zstandard
La abundancia de niveles de compresión ofrece importantes posibilidades de realizar ajustes precisos. No obstante, asegúrese de medir los datos y tener en cuenta las ventajas y desventajas a la hora de decidir el nivel de compresión. Se recomienda utilizar el nivel predeterminado 3 o un nivel comprendido entre 6 y 9 para lograr un equilibrio razonable entre la velocidad de compresión y el tamaño de los datos comprimidos. Reserve los niveles de 20 y posteriores para aquellos casos en que el tamaño sea lo más importante y la velocidad de compresión no suponga un problema.
Consideraciones y limitaciones
Cuando utilice los niveles de compresión ZSTD en Athena, tenga en cuenta los siguientes puntos.
-
La propiedad
compression_level
de ZSTD solo es compatible con la versión 3 del motor Athena. -
La propiedad
compression_level
de ZSTD es compatible con las instruccionesALTER TABLE
,CREATE TABLE
yCREATE TABLE AS
(CTAS), yUNLOAD
. -
La propiedad
compression_level
es opcional. -
La propiedad
compression_level
solo es compatible con la compresión ZSTD. -
Los niveles de compresión posibles están comprendidos entre 1 y 22.
-
El nivel de compresión predeterminado es 3.
Para obtener información sobre la compatibilidad de compresión para Apache Hive ZSTD en Athena, consulte Uso de compresión de tablas de Hive. Para obtener información sobre la compatibilidad de compresión para Apache Iceberg ZSTD en Athena, consulte Uso de la compresión de tablas de Iceberg.
Especificación de los niveles de compresión de ZSTD
Para especificar el nivel de compresión ZSTD de las instrucciones ALTER TABLE
, CREATE
TABLE
, CREATE TABLE AS
y UNLOAD
, utilice la propiedad compression_level
. Para especificar la compresión ZSTD propiamente dicha, debe utilizar la propiedad de compresión individual que utilice la sintaxis de la instrucción.
En la cláusula SET
TBLPROPERTIES
de la instrucción ALTER TABLE SET
TBLPROPERTIES, especifique la compresión ZSTD mediante 'write.compression' = ' ZSTD'
o 'parquet.compression' =
'ZSTD'
. Después, utilice la propiedad compression_level
para especificar un valor comprendido entre 1 y 22 (por ejemplo, 'compression_level' = '5'
). Si no especifica ninguna propiedad de nivel de compresión, el nivel de compresión se establece en 3 de manera predeterminada.
Ejemplo
En el siguiente ejemplo se modifica la tabla existing_table
para que utilice el formato de archivo Parquet con compresión ZSTD y nivel 4 de compresión ZSTD. En la cláusula TBLPROPERTIES
, el valor del nivel de compresión debe introducirse como una cadena y no como un entero y, por lo tanto, debe introducirse entre comillas simples o dobles.
ALTER TABLE existing_table
SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')
En la cláusula TBLPROPERTIES
de la instrucción CREATE TABLE, especifique 'write.compression' =
'ZSTD'
o 'parquet.compression' = 'ZSTD'
y, a continuación, utilice compression_level =
y especifique un valor comprendido entre 1 y 22 como una cadena. Si no se especifica la propiedad compression_level
compression_level
, el nivel de compresión predeterminado es 3.
Ejemplo
En el siguiente ejemplo se crea una tabla con formato de archivo Parquet mediante compresión ZSTD y el nivel 4 de compresión ZSTD.
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')
En la cláusula WITH
de la instrucción CREATE TABLE AS, especifique write_compression = 'ZSTD'
o parquet_compression = 'ZSTD'
y, a continuación, utilice compression_level
=
y especifique un valor comprendido entre 1 y 22 como un entero. Si no se especifica la propiedad compression_level
compression_level
, el nivel de compresión predeterminado es 3.
Ejemplo
En el siguiente ejemplo de CTAS se especifica Parquet como formato de archivo mediante compresión ZSTD con un nivel de compresión 4. En la cláusula WITH
, el valor del nivel de compresión debe especificarse como un entero, no como una cadena.
CREATE TABLE new_table
WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4)
AS SELECT * FROM old_table
En la cláusula WITH
de la instrucción UNLOAD, especifique compression = 'ZSTD'
y, a continuación, utilice compression_level =
y especifique un valor comprendido entre 1 y 22 como un entero. Si no se especifica la propiedad compression_level
compression_level
, el nivel de compresión predeterminado es 3.
Ejemplo
En el siguiente ejemplo se descargan los resultados de la consulta en la ubicación especificada mediante el formato de archivo Parquet, compresión ZSTD y el nivel 4 de compresión ZSTD.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-bucket/'
WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)