AWS EMR Spark Python-Protokollierung

9

Ich führe einen sehr einfachen Spark-Job in AWS EMR aus und kann anscheinend keine Protokollausgabe von meinem Skript erhalten.

Ich habe versucht, mit stderr zu drucken:

%Vor%

Und verwenden Sie den Funkenschreiber wie gezeigt hier :

%Vor%

EMR gibt mir zwei Protokolldateien, nachdem der Job ausgeführt wurde: controller und stderr . Kein Protokoll enthält die Zeichenfolge "Hello, world!" . Es ist mein Verständnis, dass stdout zu stderr in Spark umgeleitet wird. Das stderr Protokoll zeigt, dass der Job akzeptiert, ausgeführt und erfolgreich abgeschlossen wurde.

Meine Frage ist also, wo kann ich die Protokollausgabe meines Skripts sehen? Oder was soll ich in meinem Skript ändern, um korrekt zu loggen?

Bearbeiten: Ich habe diesen Befehl verwendet, um den Schritt zu übermitteln:

%Vor%     
jarbaugh 06.03.2017, 01:05
quelle

2 Antworten

4

Ich habe festgestellt, dass EMRs Protokollierung für bestimmte Schritte fast nie in den Controller- oder stderr-Protokollen endet, die neben dem Schritt in der AWS-Konsole abgerufen werden.

Normalerweise finde ich, was ich will, in den Container-Logs des Jobs (und normalerweise ist es in stdout).

Diese befinden sich normalerweise in einem Pfad wie s3://mybucket/logs/emr/spark/j-XXXXXX/containers/application‌​_XXXXXXXXX/container‌​_XXXXXXX/... . Sie müssen möglicherweise innerhalb der verschiedenen Verzeichnisse application_... und container_... in containers herumstochern.

Das letzte Containerverzeichnis sollte ein stdout.log und stderr.log haben.

    
Greg Reda 06.03.2017, 01:44
quelle
0

Um die Ausgabe des Skripts zu erfassen, können Sie auch Folgendes ausprobieren:

%Vor%

Dies schreibt die Skriptausgabe in eine Protokolldatei am Speicherort s3.

    
braj259 06.03.2017 09:32
quelle

Tags und Links