¿Por qué mis consultas de Amazon Athena tardan tanto en ejecutarse?

5 minutos de lectura
0

Mis consultas de Amazon Athena tardan mucho en ejecutarse. Los tiempos de espera de las consultas son elevados. ¿Cómo puedo acelerar el procesamiento de las consultas?

Breve descripción

Athena es un servicio de consultas interactivas sin servidor. Después de enviar las consultas a Athena, se ejecutan en un conjunto de recursos en el backend. Todos los usuarios de la región comparten estos recursos. Es posible que las consultas se pongan en cola temporalmente antes de ejecutarlas. Por lo general, las consultas tardan mucho tiempo en ejecutarse debido a un mayor tiempo de espera o a un mayor tiempo de procesamiento del motor.

Solución

Llame a la API GetQueryExecution para su ID de consulta. Esta API devuelve información sobre un único procesamiento de la consulta. La información incluye detalles útiles, como los siguientes:

  • Tiempo empleado por la consulta en cola (QueryQueueTimeInMillis)
  • Tiempo empleado por la consulta en planificación (QueryPlanningTimeInMillis)
  • Tiempo de procesamiento del motor (EngineExecutionTimeInMillis)

Esta información se puede ver en el parámetro Estadísticas de la respuesta de la API.

Mayor tiempo en cola

Es posible que sus consultas tengan un tiempo de espera mayor debido a un elevado uso de recursos en el backend. El tiempo de espera en Athena depende de la asignación de recursos. Después de enviar las consultas a Athena, se procesan mediante la asignación de recursos en función de lo siguiente:

  • Carga total del servicio
  • Número de solicitudes entrantes

Si las consultas tienen un tiempo de espera más largo, haga lo siguiente para mejorar el rendimiento de las consultas:

  1. Plantéese la posibilidad de distribuir las consultas a lo largo de un período de tiempo. Si envía consultas en lotes, envíe lotes pequeños con más frecuencia en lugar de enviar lotes grandes con menos frecuencia. Esto podría reducir el tiempo que una consulta permanece EN COLA y mejorar el tiempo total de procesamiento de la consulta.
  2. Ejecute una combinación de consultas simples y complejas en lugar de ejecutar un conjunto de consultas complejas al mismo tiempo. Además, plantéese enviar primero las consultas simples, seguidas de las complejas. Como las consultas simples se procesan rápidamente, se pueden asignar recursos a las consultas complejas sin incurrir en un mayor tiempo de espera.
  3. Si programa las consultas en escenarios, por ejemplo, para generar informes periódicos o cargar nuevas particiones, evite programarlas al principio de la hora y 30 minutos después de cada hora. La mayoría de los scripts y trabajos cron automatizados se ejecutan durante estos períodos de tiempo. Por lo tanto, la carga del servicio suele ser mayor durante estos períodos, lo que aumenta los tiempos de espera.
  4. Si su caso de uso lo permite, ejecute las consultas en varias regiones. Esto puede distribuir la carga y ayudar a adquirir más recursos de backend. Este enfoque puede reducir el tiempo en cola de las consultas.
    Importante: Puede incurrir en costes interregionales de Amazon Simple Storage Service (Amazon S3).

Mayor tiempo de planificación

Si las consultas requieren más tiempo de planificación, es posible que se deba a un exceso de particiones de la tabla. Las tablas con cientos o miles de particiones pueden ralentizar el procesamiento de las consultas. Para mejorar el rendimiento de las consultas, pruebe una o varias de las siguientes opciones:

  • Plantéese la posibilidad de reducir el número de particiones.
  • Consulte una partición cada vez y concatene los resultados.
  • Utilice la proyección de particiones para ayudar a acelerar el procesamiento de consultas de tablas con muchas particiones y a automatizar la administración de particiones.

Mayor tiempo de procesamiento

Si las consultas tienen un tiempo de procesamiento del motor más elevado, haga lo siguiente para mejorar el rendimiento de las consultas:

  1. Fragmente las tablas en particiones para restringir la cantidad de datos escaneados por cada consulta. Las particiones actúan como columnas virtuales y mantienen unidos los datos relacionados en función de los valores de las columnas. La fragmentación de las tablas en particiones puede mejorar el rendimiento de las consultas y reducir los costes. Para obtener más información, consulte Particiones de datos.
  2. Si el archivo de Amazon S3 que consulta es pequeño (por lo general, menos de 128 MB), es posible que el tiempo de procesamiento de la consulta sea mayor. El aumento del tiempo se debe a la sobrecarga que conllevan las tareas, como abrir el archivo S3, generar un listado de los directorios y configurar la transferencia de datos. Utilice el servicio S3DistCp en Amazon EMR para combinar archivos de S3 pequeños en objetos más grandes. Los objetos más grandes requieren menos solicitudes de Amazon S3, lo que reduce el tiempo de procesamiento de las consultas.
  3. Realice otras optimizaciones del almacenamiento y las consultas para mejorar el rendimiento y reducir los tiempos de procesamiento del motor. Para obtener más información, consulte Los 10 mejores trucos para ajustar el rendimiento de Amazon Athena.

Nota: Puede enviar varias consultas a Athena al mismo tiempo según las cuotas predeterminadas relacionadas con la consulta en su región. Athena procesa las consultas mediante la asignación de recursos en función de la carga total del servicio y del número de solicitudes entrantes. Por lo tanto, es posible que no todas las consultas enviadas se ejecuten simultáneamente.


Información relacionada

Ajuste del rendimiento en Athena

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años