Wie behebe ich den Fehler „Befehl fehlgeschlagen mit Exitcode“ in AWS Glue?

Letzte Aktualisierung: 24.08.2021

Mein AWS-Glue-Extrahieren, Transformieren und Laden (ETL) -Auftrag schlägt mit dem Fehler „Befehl fehlgeschlagen mit Exitcode“ fehl.

Kurzbeschreibung

Sie erhalten diesen Fehler, wenn eine oder mehrere der folgenden Bedingungen zutreffen:

  • Dem Treiber oder Ausführer in Ihrem Auftrag ist der Speicher ausgegangen.
  • Ihr ETL-Skript hat Code-bezogene Probleme.
  • Der AWS-Glue-IAM-Rolle fehlen die erforderlichen Berechtigungen für den Zugriff auf den Skriptpfad.

Wenn Ihr Auftragsdurchauf aus einem der vorangehenden Gründe fehlschlägt, werden die entsprechenden Fehlerprotokolle an Amazon CloudWatch geschrieben.

Lösung

Verwenden Sie die entsprechenden Schritte zur Fehlerbehebung basierend auf Ihrem Anwendungsfall.

Der Auftrag schlägt mit dem Fehler „Befehl fehlgeschlagen mit Exitcode 1" fehl und die CloudWatch-Protokolle zeigen den Fehler „java.lang.OutOfMemoryError: Java-Heap-Speicherplatz“

Der Fehler „java.lang.OutOfMemoryError: Java-Heap-Speicherplatz“ zeigt an, dass einem Treiberprozess in Ihrem Auftrag der Speicher ausgeht. Um herauszufinden, ob die Out-of-Memory-Ausnahme (OOM) von einem Treiber oder einem Ausführer verursacht wird, siehe Debuggen von OOM-Ausnahmen und Auftrags-Anomalien. Informationen zum Debuggen der vom Treiber verursachten OOM-Ausnahme finden Sie unter Wie behebe ich den Fehler „java.lang.OutOfMemoryError: Java Heap Space“ in AWS Glue? Weitere Informationen finden Sie unter Debuggen einer Treiber-OOM-Ausnahme.

Der AWS-Glue-Auftrag schlägt mit dem Fehler „Befehl fehlgeschlagen mit Exitcode 1" fehl und die CloudWatch-Protokolle zeigen den Fehler „Container killed by YARN for exceeding memory limits“.

Dieser Fehler weist darauf hin, dass der Ausführer die OOM-Ausnahme verursacht. Informationen zum Debuggen der vom Ausführer verursachten OOM-Ausnahme finden Sie unter Debuggen einer Ausführer-OOM-Ausnahme.

Der AWS-Glue-Auftrag schlägt mit dem Fehler „Befehl fehlgeschlagen mit Exitcode 10 “ fehl

Überprüfen Sie die CloudWatch-Protokolle auf den Auftrag, um Fehler im Zusammenhang mit Ausführern zu finden. Dieser Fehler tritt normalerweise während der Shuffle-Phase von Spark auf. Beispielsweise tritt der Fehler auf, wenn die Repartitionsaktion aufgerufen wird und dem Shuffle-Ausführer der Speicher ausgeht. Überwachen Sie den Ausführer während Data-Shuffle-Vorgängen auf Straggler-Aufgaben. Weitere Informationen finden Sie unter Debuggen anspruchsvoller Phasen und Straggler-Aufgaben.

Der AWS-Glue-Auftrag schlägt mit dem Fehler „Befehl fehlgeschlagen mit Exitcode 1" fehl und startet nicht

Überprüfen Sie die CloudWatch-Auftragsprotokolle auf Fehler im Zusammenhang mit Amazon Simple Storage Service (Amazon S3). Die Fehlerprotokolle könnten ähnlich aussehen wie:

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied' Request ID: xxxxxxxxxxxxx)

Dieser Fehler tritt auf, wenn die AWS-Glue-IAM-Rolle nicht über die erforderliche Berechtigung verfügt, über den Amazon-S3-Pfad auf das AWS-Glue-ETL-Skript zuzugreifen. Überprüfen Sie die Berechtigungen, die eine AWS-Glue-IAM-Rolle für den Zugriff auf den Pfad des Skripts benötigt. Stellen Sie sicher, dass diese erforderlichen Berechtigungen an die Rolle angehängt sind.

Der AWS-Glue-Auftrag schlägt mit dem Fehler „Befehl fehlgeschlagen mit Exitcode 1" fehl und die CloudWatch-Protokolle zeigen den Fehler „Ausnahme im Thread „main“ java.lang.noSuchMethodeError“ oder „Ausnahme im Thread „main“ java.lang.ExceptionInInitializerError“.

Diese Ausnahmen deuten auf einen JAR-Abhängigkeitskonflikt oder Spark-Versionskonflikt hin Überprüfen Sie die ausführbaren und/oder die zusätzlichen JAR-Dateien, die im Auftrag übergeben wurden, auf Konflikte.

Der AWS-Glue-Auftrag schlägt mit „Befehl fehlgeschlagen mit Exitcode 1" fehl und die CloudWatch-Protokolle zeigen den Fehler „RuntimeError“ an.

Der Fehler „RuntimeError“ zeigt an, dass die im ETL-Skript übergebene Spark-SQL eine semantische Ausnahme hat.

Beispiel:

RuntimeError: FAILED: SemanticException [Error 10006]: Partition not found

Um diesen Fehler zu beheben, überprüfen Sie die AWS-Glue-Auftragsprotokolle auf SQL-Syntaxfehler.

Hinweis: Dieser Fehler kann aus verschiedenen Gründen auftreten, z. B. aufgrund von Netzwerkproblemen. Daher sind die Lösungsschritte nicht auf die in dem Artikel bereitgestellten beschränkt.