Uso del optimizador basado en costos - Amazon Athena

Uso del optimizador basado en costos

Puede utilizar la característica de optimización basada en costes (CBO) de Athena SQL para optimizar sus consultas. Tiene la opción de solicitar a Athena que recopile estadísticas a nivel de tabla o columna para una de sus tablas en AWS Glue. Si todas las tablas de la consulta tienen estadísticas, Athena las utiliza para crear un plan de ejecución que determine que tiene el mejor rendimiento. El optimizador de consultas calcula planes alternativos en función de un modelo estadístico y, a continuación, le permite seleccionar el que probablemente sea más rápido para ejecutar la consulta.

Las estadísticas de las tablas AWS Glue se recopilan y almacenan en AWS Glue Data Catalog y se ponen a disposición de Athena para mejorar la planificación y ejecución de las consultas. Estas estadísticas son estadísticas a nivel de columna, como el número de valores distintos, nulos, máximos y mínimos en tipos de archivos como Parquet, ORC, JSON, ION, CSV y XML. Amazon Athena utiliza estas estadísticas para optimizar las consultas mediante la aplicación de los filtros más restrictivos lo antes posible en el procesamiento de consultas. Este filtrado limita el uso de memoria y la cantidad de registros que deben leerse para obtener los resultados de la consulta.

Junto con CBO, Athena utiliza una característica llamada optimizador basado en reglas (RBO). El RBO aplica de forma mecánica las reglas que se espera que mejoren el rendimiento de las consultas. El RBO suele ser beneficioso porque sus transformaciones tienen como objetivo simplificar el plan de consultas. Sin embargo, dado que RBO no realiza cálculos de costes ni comparaciones de planes, las consultas más complicadas dificultan que RBO cree un plan óptimo.

Por este motivo, Athena utiliza tanto RBO como CBO para optimizar sus consultas. Una vez que Athena identifica las oportunidades para mejorar la ejecución de las consultas, crea un plan óptimo. Para obtener más información acerca de los detalles del plan de ejecución, consulte Visualización de planes de ejecución para consultas SQL. Para obtener información detallada sobre cómo funciona CBO, consulte Acelerar las consultas con el optimizador basado en costos en Amazon Athena en el blog de Big Data de AWS.

Para generar estadísticas para las tablas del catálogo de AWS Glue, puede utilizar la consola de Athena, la consola de AWS Glue o las API de AWS Glue. Como Athena está integrada con el catálogo de AWS Glue, obtendrá automáticamente las mejoras de rendimiento de las consultas correspondientes cuando ejecute consultas desde Amazon Athena.

Consideraciones y limitaciones

  • Tipos de tablas: actualmente, la característica CBO de Athena solo admite las tablas Hive que se encuentran en AWS Glue Data Catalog.

  • Athena para Spark: la característica CBO no está disponible en Athena for Spark.

  • Precios: para obtener información sobre los precios, consulte la página de precios de AWS Glue.

Generación de las estadísticas de una tabla mediante la consola de Athena

En esta sección se describe cómo utilizar la consola de Athena para generar estadísticas a nivel de tablas o columnas para una tabla en AWS Glue. Para obtener información sobre cómo generar estadísticas de tablas mediante AWS Glue, consulte Trabajar con estadísticas en columnas en la Guía de desarrolladores de AWS Glue.

Para generar las estadísticas de una tabla mediante la consola de Athena
  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. En la lista Tablas del editor de consultas de Athena, elija los tres puntos verticales de la tabla que desee y, a continuación, elija Generar estadísticas.

    Menú contextual de una tabla en el editor de consultas de Athena.
  3. En el cuadro de diálogo Generar estadísticas, seleccione Todas las columnas para generar estadísticas para todas las columnas de la tabla o elija Columnas seleccionadas para seleccionar columnas específicas. Todas las columnas es el valor predeterminado.

    El cuadro de diálogo para generar estadísticas.
  4. Para el rol de servicio de AWS Glue, cree o seleccione un rol de servicio existente al que darle permiso a AWS Glue para generar estadísticas. El rol de servicio AWS Glue también requiere permisos S3:GetObject para el bucket de Amazon S3 que contiene los datos de la tabla.

    Elegir un rol de servicio de AWS Glue.
  5. Elija Generar estadísticas. Un banner de notificación sobre la generación de estadísticas para table_name muestra el estado de la tarea.

    El banner de notificación de generación de estadísticas.
  6. Para ver los detalles en la consola AWS Glue, seleccione Ver en Glue.

    Para obtener información sobre cómo ver las estadísticas en la consola AWS Glue, consulte Vista de estadísticas de las columnas en la Guía para desarrolladores de AWS Glue.

  7. Una vez generadas las estadísticas, las tablas y columnas que contienen estadísticas muestran la palabra Estadísticas entre paréntesis, como en la siguiente imagen.

    Una tabla que muestra los iconos de las estadísticas en el editor de consultas de Athena.

Ahora, cuando ejecute sus consultas, Athena realizará una optimización basada en los costes en las tablas y columnas para las que se generaron las estadísticas.

Recursos adicionales de

Para obtener información adicional, consulte el siguiente recurso.

Enhance query performance using AWS Glue Data Catalog statistics (AWS YouTube channel)