Minimice los gastos de planificación -

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Minimice los gastos de planificación

Como se discutió sobre los temas clave de Apache Spark, el controlador Spark genera el plan de ejecución. Según ese plan, las tareas se asignan al ejecutor de Spark para su procesamiento distribuido. Sin embargo, el controlador Spark puede convertirse en un cuello de botella si hay una gran cantidad de archivos pequeños o si AWS Glue Data Catalog contiene una gran cantidad de particiones. Para identificar los altos gastos de planificación, evalúe las siguientes métricas.

CloudWatch métricas

Compruebe CPUla carga y el uso de la memoria en las siguientes situaciones:

  • La CPUcarga del controlador Spark y el uso de la memoria se registran como altos. Normalmente, el controlador Spark no procesa los datos, por lo que el uso de la CPU carga y la memoria no aumentan. Sin embargo, si la fuente de datos de Amazon S3 tiene demasiados archivos pequeños, la enumeración de todos los objetos de S3 y la gestión de un gran número de tareas puede provocar un uso elevado de los recursos.

  • Hay un largo intervalo antes de que comience el procesamiento en el ejecutor de Spark. En la siguiente captura de pantalla de ejemplo, la CPU carga del ejecutor de Spark es demasiado baja hasta las 10:57, a pesar de que el trabajo comenzó a las AWS Glue 10:00. Esto indica que es posible que el controlador de Spark esté tardando mucho en generar un plan de ejecución. En este ejemplo, recuperar la gran cantidad de particiones del catálogo de datos y enumerar la gran cantidad de archivos pequeños en el controlador de Spark lleva mucho tiempo.

    Gráfico que muestra el controlador y los ejecutores.

Interfaz de usuario de Spark

En la pestaña Job de la interfaz de usuario de Spark, puedes ver la hora enviada. En el siguiente ejemplo, el controlador de Spark inició el job0 a las 10:56:46, aunque el trabajo comenzó a las 10:00:00. AWS Glue

""

También puede ver las tareas (para todas las etapas): Finalizadas/Tiempo total en la pestaña Trabajo. En este caso, el número de tareas se registra como. 58100 Como se explica en la sección Amazon S3 de la página Paralelizar tareas, la cantidad de tareas corresponde aproximadamente a la cantidad de objetos de S3. Esto significa que hay unos 58.100 objetos en Amazon S3.

Para obtener más información sobre este trabajo y su cronograma, consulte la pestaña Etapa. Si observas un cuello de botella en el controlador Spark, considera las siguientes soluciones:

  • Si Amazon S3 tiene demasiados archivos, consulte las instrucciones sobre el paralelismo excesivo de la sección Demasiadas particiones de la página Paralelizar tareas.

  • Si Amazon S3 tiene demasiadas particiones, consulte las instrucciones sobre el uso excesivo de particiones en la sección Demasiadas particiones de Amazon S3 de la página Reducir la cantidad de datos escaneados. Habilite los índices de AWS Glue particiones si hay muchas particiones para reducir la latencia a la hora de recuperar los metadatos de las particiones del catálogo de datos. Para obtener más información, consulte Mejorar el rendimiento de las consultas mediante índices de AWS Glue partición.

  • Si JDBC tiene demasiadas particiones, reduzca el hashpartition valor.

  • Si DynamoDB tiene demasiadas particiones, reduzca el valor. dynamodb.splits

  • Si los trabajos de streaming tienen demasiadas particiones, reduzca el número de particiones.