2017-07-17 17 views
2

スパークエクゼキュータのログに完全なスタックトレースが表示されます。スパークログで完全なスタックトレースを取得

私は例のために持っている:

によって引き起こさ

: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 more

私は欠けている18をもっと見たいと思っています。私はログレベルなどに変更しようとしましたが、それは助けにはなりませんでした。

+0

あなたは、SparkのUIを使用していますか? – tbone

+0

作業中のsparkフォルダ内のログを見ていますが、UIのstderrとstdoutと同じだと思います。 – ozzieisaacs

+0

スタックトレースの ')... x more'が表示されていると、それらの呼び出しが他の場所で(すでに実行されている、またはトップレベルの実行中に)カバーされていたことを意味します。スパークスタックトレースは、遅延評価のおかげで最も役に立ちます。 – puhlen

答えて

0

Solusion 1. spark installフォルダに、log4j.propertiesファイルを含むconfフォルダがあります。そのファイルをログレベルに設定できます。

スパークのデフォルトではINFOが使用されていますが、DEBUGまたはTRACEに変更してすべてのスパークログを取得できます。 のconfigureテンプレート:レベル用 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がDEBUGに変更またはトレース可能性など

関連する問題