PySpark Logging?

9

Ich möchte, dass mein in Python geschriebenes Spark-Treiberprogramm einige grundlegende Protokollierungsinformationen ausgibt. Es gibt drei Möglichkeiten, dies zu sehen:

  1. Verwenden der PySpark py4j-Bridge, um auf die von Spark verwendete Java log4j-Protokollierungsfunktion zuzugreifen.

log4jLogger = sc._jvm.org.apache.log4j LOGGER = log4jLogger.LogManager.getLogger(__name__) LOGGER.info("pyspark script logger initialized")

  1. Verwenden Sie einfach den Standard-Konsolendruck.

  2. logging Python-Standardbibliotheksmodul. Dies scheint ideal und der pythonischste Ansatz, jedoch zumindest nicht out of the box, es funktioniert nicht und protokollierte Nachrichten scheinen nicht wiederherstellbar. Natürlich kann dies konfiguriert werden, um zu py4j- & gt; log4j und / oder zur Konsole zu loggen.

Der offizielle Programmführer ( Ссылка ) erwähnt das Logging nicht alle. Das ist enttäuschend. Es sollte eine dokumentierte Standardmethode zur Protokollierung von einem Spark-Treiberprogramm geben.

hat nach diesem Problem gesucht und Folgendes gefunden: How do Ich logge mich von meinem Python Spark-Skript aus

Aber der Inhalt dieses Threads war unbefriedigend.

Insbesondere habe ich folgende Fragen:

  • Fehle ich eine Standardmethode zum Einloggen von einem PySpark-Treiberprogramm?
  • Gibt es irgendwelche Vorteile / Nachteile für die Anmeldung bei py4j- & gt; log4j vs Konsole?
clay 18.05.2016, 06:19
quelle

2 Antworten

1

Eine sauberere Lösung besteht darin, das standardmäßige Python-Protokollierungsmodul mit einem benutzerdefinierten verteilten Handler zu verwenden, um Protokollnachrichten von allen Knoten des Funke-Clusters zu sammeln.

Siehe "Anmelden in PySpark" dieses Gist:

Ссылка

    
user1944010 11.01.2017 18:33
quelle
0

In meiner Python-Entwicklungsumgebung (Spark-Setup für einzelne Computer) verwende ich Folgendes:

%Vor%

funktioniert mit dem Skript spark-submit .

    
Ytsen de Boer 19.01.2017 11:01
quelle

Tags und Links