Ich möchte, dass mein in Python geschriebenes Spark-Treiberprogramm einige grundlegende Protokollierungsinformationen ausgibt. Es gibt drei Möglichkeiten, dies zu sehen:
log4jLogger = sc._jvm.org.apache.log4j
LOGGER = log4jLogger.LogManager.getLogger(__name__)
LOGGER.info("pyspark script logger initialized")
Verwenden Sie einfach den Standard-Konsolendruck.
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:
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:
In meiner Python-Entwicklungsumgebung (Spark-Setup für einzelne Computer) verwende ich Folgendes:
%Vor%funktioniert mit dem Skript spark-submit .
Tags und Links logging apache-spark pyspark