覆盖Spark log4j配置

时间:2015-07-01 23:18:26

标签: logging apache-spark log4j

我在Yarn群集上运行Spark并配置了log4j.properties,以便默认情况下所有日志都转到日志文件。但是,对于某些火花作业,我希望日志转到控制台而不更改log4j文件和实际作业的代码。实现这一目标的最佳方法是什么?谢谢,全部。

2 个答案:

答案 0 :(得分:1)

我知道至少有4种解决方案可以解决这个问题。

  1. 您可以修改Spark计算机中的log4j.properties

  2. 当您在spark上运行作业时,最好将log4j文件作为配置文件提交到spark示例

    bin / spark-submit --class com.viaplay.log4jtest.log4jtest --conf“spark.driver.extraJavaOptions = -Dlog4j.configuration = file:/Users/feng/SparkLog4j/SparkLog4jTest/target/log4j2.properties” --master local [*] /Users/feng/SparkLog4j/SparkLog4jTest/target/SparkLog4jTest-1.0-jar-with-dependencies.jar

  3. 尝试将log4j导入您的逻辑代码。

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

    将这些记录器放到SparkContext()函数中         Logger.getLogger( “组织”)setLevel(Level.INFO)。         Logger.getLogger( “阿卡”)setLevel(Level.INFO);

  4. Spark使用spark.sql.SparkSession

    import org.apache.spark.sql.SparkSession; spark = SparkSession.builder.getOrCreate() spark.sparkContext.setLogLevel( '错误')

答案 1 :(得分:0)

根据文档:upload a custom log4j.properties using spark-submit, by adding it to the --files list of files to be uploaded with the application.

我刚尝试在Yarn群集上使用log4j.properties文件,它运行正常。

spark-submit --class com.foo.Bar \
  --master yarn-cluster \
  --files path_to_my_log4j.properties \
  my.jar