Überwachung mit Erkenntnissen in die AWS Glue-Auftragsausführung - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überwachung mit Erkenntnissen in die AWS Glue-Auftragsausführung

Erkenntnisse in die AWS Glue-Auftragsausführung ist eine Funktion in AWS Glue, die das Auftrags-Debugging und die Optimierung für Ihre AWS Glue-Aufträge vereinfacht. AWS Glue bietet Spark UI, und CloudWatch Logs und Metriken zur Überwachung Ihrer AWS Glue-Aufträge. Mit dieser Funktion erhalten Sie diese Informationen über Ihre Ausführung des AWS Glue-Auftrags:

  • Zeilennummer Ihres AWS Glue-Auftragsskript, das einen Fehler hatte.

  • Spark-Aktion, die zuletzt im Spark-Abfrageplan kurz vor dem Fehler Ihres Auftrags ausgeführt wurde.

  • Spark-Ausnahmeereignisse im Zusammenhang mit dem Fehler, der in einem zeitgeordneten Protokollstream dargestellt wird.

  • Ursachenanalyse und empfohlene Maßnahmen (z. B. die Optimierung Ihres Skripts), um das Problem zu beheben.

  • Häufige Spark-Ereignisse (Protokollmeldungen in Bezug auf eine Spark-Aktion) mit einer empfohlenen Aktion, die die Ursache behandelt.

All diese Erkenntnisse stehen Ihnen zur Verfügung, indem Sie zwei neue Protokoll-Streams in den CloudWatch Logs für Ihre AWS Glue-Aufträge verwenden.

Voraussetzungen

Die Funktion Erkenntnisse in die AWS Glue-Auftragsausführung ist für AWS Glue Version 2.0 und AWS Glue Version 3.0 verfügbar. Sie können dem Migrationshandbuch für Ihre bestehenden Aufträge folgen, um sie von älteren AWS Glue-Versionen zu aktualisieren.

Aktivieren von Erkenntnissen in Auftragsausführungen für einen AWS Glue-ETL-Auftrag

Sie können Erkenntnisse in Auftragsausführungen durch AWS Glue Studio oder die CLI aktivieren.

AWS Glue Studio

Bei der Erstellung eines Auftrags via AWS Glue Studio können Sie Erkenntnisse in Auftragsausführungen im Tab Auftragsdetails aktivieren oder deaktivieren. Überprüfen Sie, dass die Auftrags-Erkenntnisse generieren-Box ausgewählt ist (standardmäßig aktiviert).


        Aktivieren von Erkenntnissen in Auftragsausführungen in AWS Glue Studio.

Befehlszeile

Wenn Sie einen Auftrag über die CLI erstellen, können Sie eine Auftragsausführung mit einem einzigen neuen Auftrags-Parameter starten: --enable-job-insights = true.

Standardmäßig werden die Protokoll-Streams der Auftragsausführungs-Erkenntnisse unter derselben Standardprotokollgruppe erstellt, die von Kontinuierliche AWS Glue-Protokollierung, das heißt, /aws-glue/jobs/logs-v2/ verwendet wird. Sie können benutzerdefinierte Protokollgruppennamen, Protokollfilter und Protokollgruppenkonfigurationen mit denselben Argumenten für die kontinuierliche Protokollierung einrichten. Weitere Informationen finden Sie unter Kontinuierliche Protokollierung für AWS Glue-Aufträge aktivieren.

Zugriff auf die Protokoll-Streams der Auftragsausführungs-Erkenntnisse in CloudWatch

Wenn die Funktion „Auftragsausführungs-Erkenntnisse“ aktiviert ist, werden möglicherweise zwei Protokoll-Streams erstellt, wenn eine Auftragsausführung fehlschlägt. Wenn ein Auftrag erfolgreich abgeschlossen ist, wird keiner der Streams generiert.

  1. Protokoll-Stream für Ausnahmeanalyse: <job-run-id>-job-insights-rca-driver. Dieser Stream bietet Folgendes:

    • Zeilennummer Ihres AWS Glue-Auftragsskripts, die den Fehler verursacht hat.

    • Spark-Aktion, die zuletzt im Spark-Abfrageplan (DAG) ausgeführt wurde.

    • Prägnante zeitgeordnete Ereignisse des Spark-Treibers und der Executors, die mit der Ausnahme zusammenhängen. Hier finden Sie Details wie vollständige Fehlermeldungen, die fehlgeschlagene Spark-Aufgabe und deren Executor-ID, die Ihnen helfen, sich bei Bedarf auf den Protokoll-Stream des jeweiligen Executors zu konzentrieren.

  2. Regelbasierter Erkenntnis-Stream:

    • Ursachenanalyse und Empfehlungen zur Behebung der Fehler (z. B. Verwendung eines bestimmten Auftrags-Parameters zur Optimierung der Leistung).

    • Relevante Spark-Ereignisse, die als Grundlage für die Ursachenanalyse und eine empfohlene Aktion dienen.

Anmerkung

Der erste Stream wird nur vorhanden sein, wenn Spark-Ausnahme-Ereignisse für eine fehlgeschlagene Auftragsausführung verfügbar sind und der zweite Stream wird nur vorhanden sein, wenn Erkenntnisse für die fehlgeschlagene Auftragsausführung verfügbar sind. Wenn Ihr Auftrag beispielsweise erfolgreich abgeschlossen ist, wird keiner der Streams generiert. Wenn Ihr Auftrag fehlschlägt, aber keine dienstdefinierte Regel vorhanden ist, die mit Ihrem Fehlerszenario übereinstimmen kann, wird nur der erste Stream generiert.

Wenn der Auftrag aus AWS Glue Studio erstellt wurde, sind die Links zu den oben genannten Streams auch unter der Registerkarte (Auftragsausführungs-Erkenntnisse) als „Prägnante und konsolidierte Fehlerprotokolle“ und „Fehleranalyse und Anleitung“ verfügbar.


        Die Seite „Auftrags-Ausführungsdetails“ mit Links zu den Protokoll-Streams.

Beispiel für AWS Glue-Auftragsausführungs-Erkenntnisse

In diesem Abschnitt stellen wir Ihnen ein Beispiel vor, wie die Funktion „Auftragsausführungs-Erkenntnisse“ Ihnen helfen kann, ein Problem in Ihrem fehlgeschlagenen Auftrag zu lösen. In diesem Beispiel hat ein Benutzer vergessen, das erforderliche Modul (Tensorflow) in einen AWS Glue-Auftrag zu importieren, um ein Modell für Machine Learning auf ihre Daten zu analysieren und zu erstellen.

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

Ohne die Funktion „Auftragsausführungs-Erkenntnisse“ wird nur die folgende Nachricht angezeigt, die von Spark ausgelöst wird, da der Auftrag fehlschlägt:

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

Die Nachricht ist mehrdeutig und schränkt Ihre Debugging-Erfahrung ein. In diesem Fall bietet Ihnen diese Funktion zusätzliche Erkenntnisse in zwei CloudWatch-Logs-Streams:

  1. Der job-insights-rca-driver-Protokoll-Stream:

    • Ausnahme-Ereignisse: Dieser Protokoll-Stream bietet Ihnen die Spark-Ausnahmeereignisse im Zusammenhang mit dem Fehler, der vom Spark-Treiber und verschiedenen verteilten Workern gesammelt wurde. Diese Ereignisse helfen Ihnen, die zeitgeordnete Verbreitung der Ausnahme zu verstehen, wenn fehlerhafter Code über Spark-Aufgaben, Executors und Phasen hinweg ausgeführt wird, die auf die AWS Glue-Worker verteilt sind.

    • Zeilennummern: Dieser Protokoll-Stream identifiziert Zeile 21, die den Aufruf zum Importieren des fehlenden Python-Moduls gemacht hat, das den Fehler verursacht hat; Außerdem wird Zeile 24, der Aufruf von Spark Action collect(), als die zuletzt ausgeführte Zeile in Ihrem Skript identifiziert.

    
        Der Protokoll-Stream job-insights-rca-driver.
  2. Der job-insights-rule-driver-Protokoll-Stream:

    • Ursache und Empfehlung: Zusätzlich zu der Zeilennummer und der zuletzt ausgeführten Zeilennummer für den Fehler in Ihrem Skript zeigt dieser Protokoll-Stream die Ursachenanalyse und Empfehlung an, dass Sie dem AWS Glue-Dokument folgen und die erforderlichen Auftrags-Parameter einrichten, um ein zusätzliches Python-Modul in Ihrem AWS Glue-Auftrag zu verwenden.

    • Basis-Ereignis: Dieser Protokoll-Stream zeigt auch das Spark-Ausnahmeereignis an, das mit der vom Service definierten Regel ausgewertet wurde, um die Ursache abzuleiten und eine Empfehlung abzugeben.

    
        Der Protokoll-Stream job-insights-rule-driver.