2017-09-14 52 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) –