Optimización de las tablas de Iceberg - Amazon Athena

Optimización de las tablas de Iceberg

Athena proporciona varias características de optimización para mejorar el rendimiento de las consultas en las tablas de Apache Iceberg. A medida que se acumulan los datos, las consultas pueden volverse menos eficientes debido al aumento de la sobrecarga de procesamiento de archivos y al costo computacional que implica aplicar eliminaciones a nivel de fila almacenadas en los archivos de eliminación de Iceberg. Para abordar estos desafíos, Athena ayuda a los operadores de compactación manual y vaciado a optimizar la estructura de la tabla. Athena también trabaja con las estadísticas de Iceberg para permitir la optimización de las consultas en función de los costos y la indexación de columnas de Parquet para reducir los datos con precisión durante la ejecución de las consultas. Estas características funcionan en conjunto para reducir el tiempo de ejecución de las consultas, minimizar el escaneo de datos y reducir los costos. En este tema se describe cómo utilizar estas capacidades de optimización para mantener las consultas de alto rendimiento en las tablas de Iceberg.

OPTIMIZE

La acción de compactación OPTIMIZE table REWRITE DATA reescribe los archivos de datos en una disposición más optimizada en función de su tamaño y del número de archivos de eliminación asociados. Para obtener detalles sobre la sintaxis y las propiedades de la tabla, consulte OPTIMIZE.

Ejemplo

El siguiente ejemplo fusiona archivos de borrado en archivos de datos y produce archivos cercanos al tamaño de archivo objetivo cuando el valor de category es c1.

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUM lleva a cabo el vencimiento de las instantáneas y la eliminación de archivos huérfanos. Estas acciones reducen el tamaño de los metadatos y eliminan los archivos que no están en el estado actual de la tabla y que también tienen una antigüedad superior al periodo de retención especificado para la tabla. Para obtener detalles sobre la sintaxis, consulte VACUUM.

Ejemplo

En el siguiente ejemplo, se usa una propiedad de tabla para configurar la tabla iceberg_table de manera que retenga los datos de los últimos tres días y, a continuación, VACUUM se usa para hacer vencer las instantáneas antiguas y eliminar los archivos huérfanos de la tabla.

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table

Uso de las estadísticas de tablas de Iceberg

El optimizador basado en costos de Athena utiliza las estadísticas de Iceberg para producir planes de consultas óptimos. Cuando se generan estadísticas para las tablas de Iceberg, Athena utiliza automáticamente esta información para tomar decisiones inteligentes sobre el orden de las uniones, los filtros y el comportamiento de agregación, lo que a menudo mejora el rendimiento de las consultas y reduce los costos.

Las estadísticas de Iceberg están activadas de forma predeterminada cuando se utilizan tablas de S3. Para otras tablas de Iceberg, Athena usa la propiedad use_iceberg_statistics de la tabla para determinar si debe aprovechar las estadísticas para la optimización basada en los costos. Para empezar, consulte Optimización del rendimiento de las consultas mediante estadísticas de columnas en la Guía del usuario de AWS Glue o utilice la consola de Athena para generar estadísticas bajo demanda en las tablas de Iceberg.

Uso de la indexación de columnas de Parquet

La indexación de columnas de Parquet permite a Athena realizar una depuración de datos más precisa durante la ejecución de la consulta al aprovechar las estadísticas mínimas/máximas a nivel de página, además de las estadísticas a nivel de grupo de filas. Esto permite a Athena omitir páginas innecesarias dentro de los grupos de filas, lo que reduce significativamente la cantidad de datos escaneados y mejora el rendimiento de las consultas. Funciona mejor para consultas con predicados de filtros selectivos en columnas ordenadas, lo que mejora tanto el tiempo de ejecución como la eficiencia del escaneo de datos y, al mismo tiempo, reduce la cantidad de datos que Athena necesita leer de Amazon S3.

Athena usa los índices de columnas de Parquet de forma predeterminada con las tablas de S3 si los índices de columnas están presentes en los archivos de Parquet subyacentes. Para otras tablas de Iceberg, Athena utiliza la propiedad use_iceberg_parquet_column_index para determinar si debe utilizar los índices de columnas del archivo de Parquet. Establezca esta propiedad de la tabla mediante la consola de AWS Glue o la API UpdateTable.