2017-09-14 110 views
0

的作品,我想控制我的星火日誌使用 sc.setLogLevel(「ERROR」); 好像在羣集環境中不起作用。誰能幫忙?SparkContext.setLogLevel(「DEBUG」)不會在集羣

public static JavaSparkContext getSparkContext(String appName, SparkConf conf) { 
    SparkSession spark = getSparkSession(appName, conf); 
    JavaSparkContext sc = new JavaSparkContext(spark.sparkContext()); 
    sc.setLogLevel("WARN"); 
    return sc; 
} 

回答

2

要配置日誌級別,添加下列選項到你的火花提交命令:

'--conf 「spark.driver.extraJavaOptions = -Dlog4j.configuration = custom-log4j.properties」'

'--conf 「spark.executor.extraJavaOptions = -Dlog4j.configuration = custom-log4j.properties」'

這裏假設你有一個叫做類路徑上的custom-log4j.properties文件。這個log4j可以控制火花日誌的詳細程度。

+0

是否有任何解決方案只能操縱我的邏輯代碼部分中的日誌?我不想附加配置文件並提交腳本。 – user2953788

+0

當您更改驅動程序的日誌級別時,執行程序將無法反映這些更改。執行如下所示:'sc.parallelize(Seq(「」))。foreachPartition(x => {LogManager,Level} import org.apache.commons.logging.LogFactory LogManager 。.getRootLogger()setLevel(Level.DEBUG) VAL數= LogFactory.getLog( 「EXECUTOR-LOG:」) log.debug( 「START EXECUTOR調試日誌LEVEL」) })' –

+0

你可以參考的詳細信息: [databricks.com](https://docs.databricks.com/spark/latest/faq/setting-log-level-on-executors.html) –