2017-07-17 150 views
2

我想在我的spark執行程序日誌中查看完整堆棧跟蹤。在Spark日誌中獲取完整堆棧跟蹤

我有例如:

所致:了java.lang.RuntimeException:java.lang.Long中不是有效的外部類型在org.apache.spark.sql.catalyst的INT 架構.expressions.GeneratedClass $ SpecificUnsafeProjection.apply_0 $(generated.java:434) at org.apache.spark.sql.catalyst.expressions.GeneratedClass $ SpecificUnsafeProjection.apply(generated.java:737) at org.apache.spark。 sql.catalyst.encoders.ExpressionEncoder.toRow(ExpressionEncoder.scala:290) ... 18更多

我想查看更多缺少的18個。我試圖改變日誌級別等,但它沒有幫助。

+0

您使用的是星火UI TRACE等? – tbone

+0

我正在查看我的spark文件夾下的日誌,但我認爲它與用戶界面中的stderr和stdout相同。 – ozzieisaacs

+0

我認爲,當你在堆棧跟蹤中看到')... x more'時,這意味着這些調用已經在其他地方(由頂層執行引起的)引起。由於懶惰的評估,Spark堆棧跟蹤通常不是最有用的。 – puhlen

回答

0

Solusion 1.在spark安裝文件夾中,有一個包含log4j.properties文件的conf文件夾,您可以將該文件配置爲記錄級別。

Spark默認使用了INFO,購買後可以更改爲DEBUG或TRACE以獲取所有火花日誌。 的配置模板: https://github.com/apache/spark/blob/master/conf/log4j.properties.template

的級別其他選項包括:所有,調試,錯誤,致命,信息,關閉,跟蹤,trace_int,警告

Solusion 2.將這些記錄到你的SparkContext()函數

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

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

的level.Info可以改變調試設備或

相關問題