版权声明:本文由董可伦首发于https://dongkelun.com,非商业转载请注明作者及原创出处。商业转载请联系作者本人。 https://blog.csdn.net/dkl12/article/details/84140956 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<a href="https://edu.csdn.net/topic/ai30?utm_source=bw_bt" target="_blank"><img src="https://img-bss.csdn.net/1556441634375.png"></a> <div id="content_views" class="markdown_views prism-atom-one-dark">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
<p>原创地址:<a href="https://dongkelun.com/2018/11/16/sparkSubmitLogLevel/" rel="nofollow" target="_blank">https://dongkelun.com/2018/11/16/sparkSubmitLogLevel/</a></p>
前言
Spark有多种方式设置日志级别,这次主要记录一下如何在spark-submit设置Spark的日志级别。
1、需求
因为Spark的日志级别默认为INFO(log4j.rootCategory=INFO, console),这样在运行程序的时候有很多我不需要的日志信息都打印出来了,看起来比较乱,比较烦,抓不住重点,而我只想把warn和error打印出来。
之前在测试环境或者在eclipse我是通过其他几种方式(下面会介绍)设置的,但是在生产环境下不允许我修改集群的配置文件(不是我负责~),而在代码里设置日志级别却不生效(原因还没找到),最后通过spark-submit里设置日志级别搞定的。
2、spark-submit 设置
spark-submit --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j.properties"
- 1
其中log4j.properties为我将本地的日志文件,拷贝到执行spark-submit的机器上
参考:https://blog.csdn.net/xueba207/article/details/50436684
3、其他几种设置方法
3.1 修改集群的配置文件
cd $SPARK_HOME/conf
cp log4j.properties.template log4j.properties
vim log4j.properties
- 1
- 2
- 3
- 4
将log4j.rootCategory=INFO, console改为log4j.rootCategory=WARN, console
3.2 在Eclipse里设置
将log4j.properties放在项目的src/main/resources即可
- Spark 默认日志文件:org/apache/spark/log4j-defaults.properties
3.3 代码里配置(未生效)
spark.sparkContext.setLogLevel("WARN")
- 1
- 在代码里设置,不生效原因未知
4、 总结
- 1、如果在自己的测试集群上,直接修改$SPARK_HOME/conf下的log4j.properties即可
- 2、如果在Eclipse里,将log4j.properties放在项目的src/main/resources即可
- 3、如果在生产环境的集群,又不允许修改配置文件的话,用上面讲的spark-submit --conf 即可
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
</div>