首先说明,这个问题在Yarn模式和standalone下都出现了,Spark版本1.6.3
我采用的是默认的日志配置,也就是:
但是我发现输出到控制台的信息,和stderr中保存的信息有一些一致(stdout没有输出),但是很多都不一致:
一致的部分:
控制台信息:
console same
stderr内容:
stderr same
不一致的部分(举例,这只是一部分):
控制台信息:
console diff
stderr内容:
stderr diff
我觉得既然log4j.properties中已经配置了log4j.appender.console.target=System.err,那应该所有控制台输出的信息都会保存到stderr中,
为什么会出现不一致的现象?有没有办法让所有在控制台输出的信息全部保存在stderr中?
于是我修改了源代码,做了些测试。我在SparkContext.scala文件的textFile函数中加入了新的打印日志的代码,各种级别都添加了,如下图所示:
textFile
但是运行后,我发现这几段代码打印的信息只出现在控制台上:
console textFile
并没有出现在stderr文件中。
因为我想调试spark,所以需要经常添加日志打印代码。现在向各位大神求助,希望知道出现不一致现象的原因,以及如何解决,多谢多谢~~~
|
|