Monitoraggio con le informazioni dell'esecuzione del processo di AWS Glue - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Monitoraggio con le informazioni dell'esecuzione del processo di AWS Glue

AWS Gluejob run insights è una funzionalità AWS Glue che semplifica il debug e l'ottimizzazione dei job. AWS Glue AWS Gluefornisce l'interfaccia utente di Spark e CloudWatch registri e metriche per il monitoraggio dei lavori. AWS Glue Con questa funzionalità, ottieni queste informazioni sull'esecuzione del tuo AWS Glue lavoro:

  • Numero di riga dello script del processo AWS Glue che ha riscontrato un errore.

  • Azione Spark eseguita per l'ultima volta nel piano di query di Spark poco prima dell'errore del processo.

  • Eventi di eccezione Spark correlati all'errore riscontrato in un flusso di log in ordine cronologico.

  • Analisi della causa principale e azione consigliata (come l'ottimizzazione dello script) per risolvere il problema.

  • Eventi Spark comuni (messaggi log relativi a un'azione Spark) con un'azione consigliata che affronta la causa principale.

Tutte queste informazioni sono disponibili utilizzando due nuovi flussi di log nei CloudWatch log dei lavori. AWS Glue

Requisiti

La funzionalità AWS Glue job run insights è disponibile per AWS Glue le versioni 2.0, 3.0 e 4.0. Puoi seguire la Guida alla migrazione per i processi esistenti per aggiornarli rispetto alle versioni più vecchie AWS Glue.

Abilitazione di Job Run Insights per un job AWS Glue ETL

È possibile abilitare le informazioni dell'esecuzione del processo tramite AWS Glue Studio o la CLI.

AWS Glue Studio

Quando si crea un processo tramite AWS Glue Studio, si possono abilitare o disabilitare le informazioni dell'esecuzione del processo nella scheda Dettagli del processo. Verifica che la casella Genera job Insights sia selezionata.

Abilitazione di informazioni dell'esecuzione del processo in AWS Glue Studio.

Riga di comando

Se si crea un processo tramite CLI, è possibile avviare un processo con un singolo nuovo parametro del processo: --enable-job-insights = true.

Per impostazione predefinita, i flussi di log di informazioni dell'esecuzione del processo vengono creati nello stesso gruppo di log predefinito utilizzato da Registrazione continua AWS Glue, cioè /aws-glue/jobs/logs-v2/. È possibile impostare il nome del gruppo di log personalizzato, i filtri di log e le configurazioni del gruppo di log utilizzando lo stesso set di argomenti per la registrazione continua. Per ulteriori informazioni, consulta l'articolo relativo all'Abilitazione della registrazione continua di processi AWS Glue.

Accesso ai flussi di log di Job Run Insights in CloudWatch

Con la funzione di informazioni dell'esecuzione del processo abilitata, potrebbero esserci due flussi di log creati quando un processo non riesce. Quando un processo termina correttamente, nessuno dei flussi viene generato.

  1. Flusso di log analisi delle eccezioni: <job-run-id>-job-insights-rca-driver. Questo flusso fornisce quanto segue:

    • Numero di riga dello script del processo AWS Glue che ha causato un errore.

    • Azione Spark eseguita per ultima nel piano di query Spark (DAG).

    • Eventi brevi in ordine cronologico dal driver e dagli esecutori Spark correlati all'eccezione. Se necessario, è possibile trovare dettagli come i messaggi di errore completi, l'attività Spark non riuscita e il relativo ID esecutori che consentono di concentrarsi sul flusso di log dell'esecutore specifico per un'indagine più approfondita.

  2. Flusso di informazioni basato su regole:

    • Analisi della causa principale e consigli su come correggere gli errori (ad esempio l'utilizzo di un parametro di lavoro specifico per ottimizzare le prestazioni).

    • Eventi Spark rilevanti come base per l'analisi della causa principale e un'azione consigliata.

Nota

Il primo flusso esiste solo se sono disponibili eventi di eccezione Spark per un'esecuzione del processo non riuscita e il secondo stream esisterà solo se sono disponibili informazioni per l'esecuzione del processo non riuscita. Ad esempio, se il processo termina correttamente, nessuno dei flussi verrà generato. Se il processo fallisce ma non esiste una regola definita dal servizio che può corrispondere allo scenario di errore, verrà generato solo il primo flusso.

Se il processo viene creato da AWS Glue Studio, i collegamenti ai flussi di cui sopra sono disponibili anche nella scheda dei dettagli esecuzione del processo (Job run insights, informazioni dell'esecuzione del processo) come "Log degli errori concisi e consolidati" e "Analisi e guida degli errori".

La pagina Dettagli dell'esecuzione del processo che include collegamenti ai flussi di log.

Esempio per informazioni dell'esecuzione del processo AWS Glue

In questa sezione, presentiamo un esempio di come la funzione Informazioni dell'esecuzione del processo può essere d'aiuto nella risoluzione di un problema nel processo non riuscito. In questo esempio, un utente ha dimenticato di importare il modulo richiesto (tensorflow) in un processo AWS Glue per analizzare e costruire un modello di machine learning sui propri dati.

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())

Senza la funzione di Informazioni dell'esecuzione del processo, data la non riuscita del processo, viene visualizzato solo questo messaggio generato da Spark:

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

Il messaggio è ambiguo e limita l'esperienza di debug. In questo caso, questa funzionalità fornisce informazioni aggiuntive in due flussi di CloudWatch log:

  1. Il flusso di log job-insights-rca-driver:

    • Eventi eccezioni: questo flusso di log fornisce gli eventi di eccezione Spark relativi all'errore raccolto dal driver Spark e dai diversi lavoratori distribuiti. Questi eventi aiutano nella comprensione della propagazione in ordine cronologico dell'eccezione mentre il codice difettoso viene eseguito su attività, esecutori e fasi di Spark distribuiti tra tutti i dipendenti AWS Glue.

    • Numeri riga: questo flusso di log identifica la riga 21, che ha eseguito la chiamata per importare il modulo Python mancante che ha causato l'errore; identifica anche la riga 24, la chiamata all'azione Spark collect(), come ultima riga eseguita nello script.

    Il flusso di job-insights-rca-driver log.
  2. Il flusso di log job-insights-rule-driver:

    • Causa principale e raccomandazione: oltre al numero di riga e all'ultimo numero di riga eseguito per l'errore nello script, questo flusso di log mostra l'analisi della causa principale e la raccomandazione per seguire il doc AWS Glue e impostare i parametri di processo necessari per utilizzare un modulo Python aggiuntivo nel processo AWS Glue.

    • Evento base: questo flusso di log mostra anche l'evento di eccezione Spark che è stato valutato con la regola definita dal servizio per dedurre la causa principale e fornire una raccomandazione.

    Il flusso di job-insights-rule-driver log.