2016-11-21 3 views
2

Wie kann ich die Protokollierung in einer Spark-Anwendung verwenden?So führen Sie die Protokollierung von Funkenanwendungen durch

Das Problem ist, dass Funken Code nicht wie geschrieben ausgeführt wird, aber async und optimiert z. möglicherweise in anderer Reihenfolge.

wie es war hier stylish spark dataset transformation mich darauf hingewiesen, sollte folgend unbedingt nicht/nicht wie in dem optimierten Abfrageplan der Funken erwartet funktionieren:

logger.info("first") 
val first = df.someTransformation 
logger.info("second") 
val second = df.otherTransformation 
+1

Was genau möchten Sie protokollieren? Können Sie ein Beispiel aus der Praxis für den Inhalt geben, den Sie protokollieren möchten? –

+0

Ich möchte mehrere Datenreinigungsschritte durchführen und möchte den Fortschritt überwachen. Für jeden Schritt möchte ich eine Logging-Nachricht ausgeben. –

Antwort

2

Die Log-Aussagen in ihrem Beispiel nicht sehr sinnvoll.

Ich sehe drei Möglichkeiten der Protokollierung:

a) Wenn Sie nur den „Fortschritt“ Ihrer Transformation protokollieren möchten, wie Sie in Ihrem Beispiel zeigen, müssen Sie eine Aktion (zB nennen count()) gelten nach dem Transformation, aber dies verursacht unnötige Berechnungen

b) montior Funken mit Funken UI, und schauen Sie in die Einstellungen wie spark.eventLog.enabled der Ausgang

c) innerhalb UDF/UDAFs zu bestehen, Sie Akkus verwenden, könnten die Protokolle der sammeln Testamentsvollstrecker und machen sie für den Fahrer zugänglich.

+0

also würden Sie vorschlagen, eine Protokollierung UDF zu schreiben? –

+0

@GeorgHeiler Nein. Wenn Sie jedoch mit UDFs arbeiten, um komplexe Transformationen durchzuführen, können Sie diesem Code Protokollierung hinzufügen –

Verwandte Themen