Os insights de execução de trabalhos do AWS Glue são um recurso do AWS Glue que simplifica a depuração e a otimização de trabalhos para seus trabalhos do AWS Glue. O AWS Glue fornece a IU do Spark e logs e métricas do CloudWatch para monitorar seus trabalhos do AWS Glue. Com esse recurso, você obtém essas informações sobre a execução do seu trabalho do AWS Glue:
Número da linha do script do trabalho do AWS Glue que apresentou uma falha.
Ação Spark executada por último no plano de consulta do Spark pouco antes da falha do seu trabalho.
Eventos de exceção do Spark relacionados à falha apresentados em um fluxo de log ordenado ao longo do tempo.
Análise de causa raiz e ação recomendada (como ajustar seu script) para corrigir o problema.
Eventos comuns do Spark (mensagens de log relacionadas a uma ação do Spark) com uma ação recomendada que aborda a causa raiz.
Todos esses insights estão disponíveis para você usando dois novos fluxos de log nos logs do CloudWatch para seus trabalhos do AWS Glue.
Requisitos
O atributo de insights de execução de trabalhos do AWS Glue está disponível para as versões 2.0, 3.0, 4.0 e 5.0 do AWS Glue. É possível seguir o guia de migração para seus trabalhos existentes para atualizá-los das versões mais antigas do AWS Glue.
Habilitação de insights de execução de trabalhos para um trabalho ETL do AWS Glue
É possível habilitar insights de execução de trabalhos por meio do AWS Glue Studio ou da CLI.
AWS Glue Studio
Ao criar um trabalho via AWS Glue Studio, é possível habilitar ou desabilitar insights de execuções de trabalhos na guia Detalhes do trabalho. Verifique se a caixa Gerar insights de trabalhos está selecionada.

Linha de comando
Se estiver criando um trabalho por meio da CLI, será possível iniciar uma execução de trabalho com um único novo parâmetro de trabalho: --enable-job-insights = true
.
Por padrão, os fluxos de log de insights de execução de trabalhos são criados sob o mesmo grupo de logs padrão usado pelo log contínuo do AWS Glue, ou seja, /aws-glue/jobs/logs-v2/
. É possível configurar o nome do grupo de logs personalizado, filtros de log e configurações de grupo de logs usando o mesmo conjunto de argumentos para o log contínuo. Para obter mais informações, consulte Habilitar o log contínuo para trabalhos do AWS Glue.
Acessar os fluxos de log de insights de execução de trabalhos no CloudWatch
Com o recurso de insights de execução de trabalhos habilitado, pode haver dois fluxos de log criados quando uma execução de trabalho falha. Quando um trabalho termina com sucesso, nenhum dos fluxos é gerado.
Fluxo de log de análise de exceção:
<job-run-id>-job-insights-rca-driver
. Este stream fornece o seguinte:Número da linha do script do trabalho do AWS Glue que causou a falha.
Ação do Spark executada por último no plano de consulta do Spark (DAG).
Eventos concisos ordenados por tempo do driver e executores do Spark relacionados à exceção. Será possível encontrar detalhes como mensagens de erro completas, a tarefa do Spark com falha e os IDs dos executores para obter ajuda para se concentrar no fluxo de log do executor específico para uma investigação mais profunda, se necessário.
Fluxo de insights baseado em regras:
Análise de causa raiz e recomendações sobre como corrigir os erros (como usar um parâmetro de trabalho específico para otimizar a performance).
Eventos relevantes do Spark servindo de base para a análise de causa raiz e uma ação recomendada.
nota
O primeiro fluxo só existirá se qualquer evento de exceção do Spark estiver disponível para uma execução de trabalho com falha, e o segundo fluxo só existirá se houver insights disponíveis para a execução do trabalho com falha. Por exemplo, se o trabalho for concluído com êxito, nenhum dos fluxos será gerado; se o trabalho falhar, mas não houver uma regra definida por serviço que possa corresponder ao seu cenário de falha, somente o primeiro fluxo será gerado.
Se o trabalho for criado do AWS Glue Studio, os links para os fluxos acima também estarão disponíveis na guia de detalhes da execução do trabalho (insights da execução do trabalho) como "Concise and consolidated error logs" (Logs de erros concisos e consolidados) e "Error analysis and guidance" (Análise de erros e orientações).

Exemplo de insights de execuções de trabalhos do AWS Glue
Nesta seção, apresentamos um exemplo de como o recurso de insights de execução de trabalhos pode ajudar a resolver um problema em um trabalho que falhou. Neste exemplo, um usuário esqueceu de importar o módulo necessário (tensorflow) em um trabalho do AWS Glue para analisar e criar um modelo de machine learning em seus dados.
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())
Sem o recurso de insights de execução de trabalhos, quando o trabalho falhar, você só vê esta mensagem emitida pelo Spark:
An error occurred while calling o111.collectToPython. Traceback (most recent call last):
A mensagem é ambígua e limita sua experiência de depuração. Nesse caso, esse recurso fornece informações adicionais em dois fluxos de log do CloudWatch:
O fluxo de log do
job-insights-rca-driver
:Eventos de exceção: este fluxo de log fornece os eventos de exceção do Spark relacionados à falha coletada do driver do Spark e de diferentes operadores distribuídos. Esses eventos ajudam a entender a propagação ordenada por tempo da exceção à medida que o código defeituoso é executado em tarefas, executores e estágios do Spark distribuídos pelos operadores do AWS Glue.
Números de linha: este fluxo de log identifica a linha 21, que fez a chamada para importar o módulo Python ausente que causou a falha; ele também identifica a linha 24, a chamada para a ação
collect()
do Spark, como a última linha executada em seu script.
O fluxo de log do
job-insights-rule-driver
:Causa raiz e recomendação: além do número da linha e do número da última linha executada para a falha no script, esse fluxo de log mostra a análise da causa raiz e a recomendação para que você siga o doc do AWS Glue e configure os parâmetros de trabalho necessários para usar um módulo Python adicional em seu trabalho do AWS Glue.
Evento base: este fluxo de log também mostra o evento de exceção do Spark que foi avaliado com a regra definida pelo serviço para inferir a causa raiz e fornecer uma recomendação.