我在Yarn群集上运行Spark并配置了log4j.properties,以便默认情况下所有日志都转到日志文件。但是,对于某些火花作业,我希望日志转到控制台而不更改log4j文件和实际作业的代码。实现这一目标的最佳方法是什么?谢谢,全部。
答案 0 :(得分:1)
我知道至少有4种解决方案可以解决这个问题。
您可以修改Spark计算机中的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-jar-with-dependencies.jar
尝试将log4j导入您的逻辑代码。
import org.apache.log4j.Logger; import org.apache.log4j.Level;
将这些记录器放到SparkContext()函数中 Logger.getLogger( “组织”)setLevel(Level.INFO)。 Logger.getLogger( “阿卡”)setLevel(Level.INFO);
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