2017-07-17 3 views
2

Ich möchte die vollständige Stack-Trace in meinem Spark-Executor-Logs sehen.Get Full Stack-Trace in Spark Log

Ich habe zum Beispiel:

Verursacht durch: java.lang.RuntimeException: java.lang.Long ist kein gültiger externer Typ für Schema int bei org.apache.spark.sql.catalyst .expressions.GeneratedClass $ SpecificUnsafeProjection.apply_0 $ (generated.java:434) bei org.apache.spark.sql.catalyst.expressions.GeneratedClass $ SpecificUnsafeProjection.apply (generated.java:737) bei org.apache.spark. sql.catalyst.encoders.ExpressionEncoder.toRow (ExpressionEncoder.scala: 290) ... 18 mehr

Ich möchte die 18 mehr sehen, die fehlen. Ich habe versucht, auf Logging Level etc, aber es hat nicht geholfen.

+0

werden Sie die Benutzeroberfläche Funken verwenden? – tbone

+0

Ich schaue auf die Protokolle in meinem Funken Ordner unter Arbeit, aber ich denke, es ist das gleiche wie stderr und stdout in der Benutzeroberfläche. – ozzieisaacs

+0

Ich denke, wenn man das ') ... x more' in der Stack-Trace sieht, bedeutet das, dass diese Anrufe bereits an anderer Stelle (in der durch oder auf der obersten Ebene vorgenommenen Ausnahme) behandelt wurden. Spark-Stack-Traces sind oft nicht die hilfreichsten dank der faulen Bewertung. – puhlen

Antwort

0

Lösung 1. In Ihrem Spark-Installationsordner befindet sich ein Ordner "conf", der die Datei "log4j.properties" enthält. Sie können diese Datei für Protokollierungsstufen konfigurieren.

Spark-Standard verwendet die INFO, kaufen Sie könnten auf DEBUG oder TRACE, um alle Spark-Logs zu erhalten. Die configure Vorlage: https://github.com/apache/spark/blob/master/conf/log4j.properties.template

Weitere Optionen für Ebene enthalten: alle, debuggen, Fehler fatal, info, weg, spur, trace_int, warnt

solusion 2. Diese Logger Ihre SparkContext Put() Funktion

import org.apache.log4j.Logger; 
import org.apache.log4j.Level; 

Logger.getLogger("org").setLevel(Level.INFO); 
Logger.getLogger("akka").setLevel(Level.INFO); 

die level.Info könnte DEBUG ändern OR usw. TRACE