Logging 超越火花log4j配置

Logging 超越火花log4j配置,logging,apache-spark,log4j,Logging,Apache Spark,Log4j,我在一个纱线集群上运行Spark,并配置了log4j.properties,以便默认情况下所有日志都转到一个日志文件。但是,对于一些spark作业,我希望日志进入控制台,而不更改log4j文件和实际作业的代码。实现这一目标的最佳方式是什么?谢谢大家。根据文档:使用spark submit上载自定义log4j.properties,方法是将其添加到要随应用程序一起上载的文件的--files列表中。 我刚刚在一个纱线簇上使用了一个log4j.properties文件,效果很好 spark-submi

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

根据文档:
使用spark submit上载自定义log4j.properties,方法是将其添加到要随应用程序一起上载的文件的--files列表中。

我刚刚在一个纱线簇上使用了一个
log4j.properties
文件,效果很好

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

我知道解决这个问题至少有4种方法

  • 您可以在Spark machines中修改log4j.properties

  • 在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-with-dependenciences.jar

  • 尝试将log4j导入逻辑代码

    导入org.apache.log4j.Logger; 导入org.apache.log4j.Level

    将这些记录器放到SparkContext()函数中 Logger.getLogger(“org”).setLevel(Level.INFO); Logger.getLogger(“akka”).setLevel(Level.INFO)

  • Spark使用Spark.sql.SparkSession

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


  • 所以我有点困惑,你的目标是为一般工作做这件事,还是仅仅为你自己写的工作?如果是你自己的工作,你有没有理由不想修改这些文件?另外,您正在运行哪种类型的群集(纱线、mesos、独立)?Hi Holden。很抱歉给你带来了困惑。我和一群人一起在一个纱线簇上运行Spark。因为log4j是全局的,所以我不想修改它。有些工作不是我的,所以我不想更改源代码。啊,这让它有点复杂,谢谢你的澄清。文件可以是
    hdfs://path/to/my/log4j.properties