2016-12-08 1 views
1

ich eine anständige Logging-Konfiguration Setup in PySpark versuchen. Ich habe eine YAML-Konfigurationsdatei, die verschiedene Loghandler einrichtet. Diese Handler bestehen aus der Konsole, einer Datei und einer SQLite DB im Format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s".Capturing PySpark Anmeldung

# SETUP LOGGING 
with open(cfile, 'rt') as f: 
    config = yaml.safe_load(f.read()) 
logging.config.dictConfig(config) 
lg = logging.getLogger("mylog." + self.__name__()) 

Also jedes Mal, wenn ich nenne das lg.xxxx('message') alles ganz gut behandelt wird.

Nun fand ich einige ganz Beiträge, wie die log4j von PySpark log_handler = sc._jvm.org.apache.log4j mit zu bekommen. Aber jetzt habe ich keine Ahnung mehr, wie ich diesen Handler zu meinem bestehenden Setup hinzufügen und alle Meldungen der PySpark-Konsole abfangen und in der Datei und in der SQLite-Datenbank speichern kann.

Antwort

1

Es ist nicht möglich Funken Jvm Protokolle, die von Python-Handler zu fangen, diese beiden sind getrennt Umgebungen. Sie haben zwei Möglichkeiten - Python-Nachrichten mit log4j von sc._jvm einzuloggen und log4j-Handler zu konfigurieren oder separate Handler zu verwenden und Protokolle (zB in sqlite) zu verbinden, nachdem der Job beendet wurde.