Supervisión con Información de ejecuciones de trabajos de AWS Glue - AWS Glue

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.

Supervisión con Información de ejecuciones de trabajos de AWS Glue

Información de ejecuciones de trabajos de AWS Glue es una característica de AWS Glue que simplifica la depuración de trabajos y la optimización de los trabajos de AWS Glue. AWS Glue proporciona la interfaz de usuario de Spark y las métricas y registros de CloudWatch Logs para la supervisión de los trabajos de AWS Glue. Con esta característica, obtiene esta información sobre la ejecución del trabajo de AWS Glue:

  • Número de línea del script del trabajo de AWS Glue con error.

  • Última acción de Spark que se ejecutó en el plan de consultas de Spark justo antes del error del trabajo.

  • Eventos de excepción de Spark relacionados con el error que se muestran en un flujo de registro ordenado por tiempo.

  • Análisis de causa raíz y acción recomendada (por ejemplo, ajustar el script) para solucionar el problema.

  • Eventos comunes de Spark (mensajes de registro relacionados con una acción de Spark) con una acción recomendada que aborda la causa raíz.

Toda esta información está disponible mediante dos nuevos flujos de registro en CloudWatch Logs para sus trabajos de AWS Glue.

Requisitos

La característica Información de ejecuciones de trabajos de AWS Glue está disponible para la versión 2.0 de AWS Glue y la versión 3.0 de AWS Glue. Puede seguir la guía de migración para actualizar los trabajos existentes desde versiones anteriores de AWS Glue.

Habilitación de información de ejecuciones de trabajos para un trabajo de ETL de AWS Glue

Puede habilitar Información de ejecuciones de trabajos a través de AWS Glue Studio o la CLI.

AWS Glue Studio

Al crear un trabajo mediante AWS Glue Studio, puede habilitar o desactivar Información de ejecuciones de trabajos en la pestaña Job Details (Detalles del trabajo). Verifique que la casilla Generate job insights (Generar información de trabajos) esté seleccionada (habilitada de forma predeterminada).


        Habilitación de Información de ejecuciones de trabajos en AWS Glue Studio.

Línea de comandos

Si crea un trabajo a través de la CLI, puede iniciar una ejecución de trabajos con un único nuevo parámetro de trabajo: --enable-job-insights = true.

De forma predeterminada, los flujos de registro de Información de ejecuciones de trabajos se crean en el mismo grupo de registros predeterminado que utiliza el registro continuo de AWS Glue, es decir, /aws-glue/jobs/logs-v2/. Puede configurar un nombre de grupo de registros personalizado, filtros de registros y configuraciones de grupos de registros con el mismo conjunto de argumentos que el registro continuo. Para obtener más información, consulte Habilitación del registro continuo para trabajos de AWS Glue.

Acceso a los flujos de registro de información de ejecuciones de trabajos en CloudWatch

Con la característica Información de ejecuciones de trabajos habilitada, es posible que haya dos flujos de registro creados cuando falla la ejecución de un trabajo. Cuando un trabajo finaliza correctamente, no se genera ninguno de los flujos.

  1. Flujo de registro de análisis de excepciones: <job-run-id>-job-insights-rca-driver. Este flujo proporciona lo siguiente:

    • Número de línea del script del trabajo de AWS Glue que causó el error.

    • Última acción de Spark que se ejecutó en el plan de consultas de Spark (DAG).

    • Eventos concisos ordenados por tiempo del controlador de Spark y ejecutores relacionados con la excepción. Puede encontrar detalles como mensajes de error completos, la tarea de Spark con error y el ID de los ejecutores que le ayudan a centrarse en el flujo de registro del ejecutor específico para llevar a cabo una investigación en profundidad si es necesario.

  2. Flujo de información basado en reglas:

    • Análisis de causa raíz y recomendaciones sobre cómo corregir los errores (por ejemplo, utilizar un parámetro de trabajo específico para optimizar el rendimiento).

    • Los eventos relevantes de Spark sirven de base para el análisis de causa raíz y una acción recomendada.

nota

El primer flujo solo existirá si hay eventos de excepción de Spark disponibles para una ejecución de trabajo con error, mientras que el segundo flujo solo existirá si hay información disponible para la ejecución del trabajo con error. Por ejemplo, si el trabajo finaliza correctamente, no se generará ninguno de los flujos; si el trabajo falla, pero no hay ninguna regla definida por el servicio que pueda coincidir con el escenario de error, solo se generará el primer flujo.

Si el trabajo se crea en AWS Glue Studio, los enlaces a los flujos anteriores también están disponibles en la pestaña Job run details (Detalles de ejecuciones de trabajos, es decir, Información de ejecuciones de trabajos) como “Concise and consolidated error logs” (Registros de errores concisos y consolidados) y “Error analysis and guidance” (Análisis de errores y orientación).


        Página Job Run Details (Detalles de ejecuciones de trabajos) que contiene enlaces a los flujos de registro.

Ejemplo de Información de ejecuciones de trabajos de AWS Glue

En esta sección, mostramos un ejemplo de cómo la característica Información de ejecuciones de trabajos puede ayudarle a resolver un problema en un trabajo con errores. En este ejemplo, un usuario olvidó importar el módulo obligatorio (tensorflow) en un trabajo de AWS Glue para analizar y crear un modelo de machine learning en sus datos.

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from pyspark.sql.types import * from pyspark.sql.functions import udf,col args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME'], args) data_set_1 = [1, 2, 3, 4] data_set_2 = [5, 6, 7, 8] scoresDf = spark.createDataFrame(data_set_1, IntegerType()) def data_multiplier_func(factor, data_vector): import tensorflow as tf with tf.compat.v1.Session() as sess: x1 = tf.constant(factor) x2 = tf.constant(data_vector) result = tf.multiply(x1, x2) return sess.run(result).tolist() data_multiplier_udf = udf(lambda x:data_multiplier_func(x, data_set_2), ArrayType(IntegerType(),False)) factoredDf = scoresDf.withColumn("final_value", data_multiplier_udf(col("value"))) print(factoredDf.collect())

Sin la característica Información de ejecuciones de trabajos, como el trabajo falla, solo verá este mensaje de Spark:

An error occurred while calling o111.collectToPython. Traceback (most recent call last):

El mensaje es ambiguo y limita la experiencia de depuración. En este caso, esta característica proporciona información adicional en dos flujos de registro de CloudWatch:

  1. El flujo de registro job-insights-rca-driver:

    • Eventos de excepción: este flujo de registro proporciona los eventos de excepción de Spark relacionados con el error recopilado por el controlador de Spark y los distintos empleados distribuidos. Estos eventos le ayudan a comprender la propagación ordenada por tiempo de la excepción, ya que el código con error se ejecuta en las tareas, los ejecutores y las etapas de Spark distribuidos en los empleados de AWS Glue.

    • Números de línea: este flujo de registro identifica la línea 21, que hizo la llamada para importar el módulo de Python que falta que causó el error; también identifica la línea 24, la llamada a la acción de Spark collect(), como última línea ejecutada del script.

    
        El flujo de registro job-insights-rca-driver.
  2. El flujo de registro job-insights-rule-driver:

    • Causa raíz y recomendación: además del número de línea y el último número de línea ejecutado para el error del script, este flujo de registro muestra el análisis de causa raíz y la recomendación para que siga el documento de AWS Glue y configure los parámetros de trabajo necesarios para utilizar un módulo de Python adicional en su trabajo de AWS Glue.

    • Evento base: este flujo de registro también muestra el evento de excepción de Spark que se evaluó con la regla definida por el servicio para inferir la causa raíz y proporcionar una recomendación.

    
        El flujo de registro job-insights-rule-driver.