我已经尝试将log4j.properties.template更改为hadoop-home / conf中的log4j.properties但是spark仍然没有把它拿起来。我试过设置
sparkconf.set("log4j.configuration", ".\\config\\log4j.properties");
但这也不起作用。我也尝试过添加
-Dlog4j.configuration=.\config\log4j.properties
以eclipse运行配置但不起作用。 Spark在启动期间仍在使用其默认值
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
我还将SPARK_CONF_DIR设置为我的环境变量以指向spark / conf目录,但这似乎也不起作用。
我在eclipse的Windows独立模式下运行它
SparkConf sparkConf = new SparkConf().setAppName("Test").setMaster("local[1]")
.set("log4j.configuration", ".\\config\\log4j.properties");
答案 0 :(得分:6)
我使用
遇到了类似的问题sparkconf.set("log4j.configuration", "path to log4j.properties");
解决方法是使用
import org.apache.log4j.PropertyConfigurator
PropertyConfigurator.configure("path to log4j.properties")
答案 1 :(得分:0)
要检查正在加载的log4j.propeties是否尝试使用spark-shell进行确认。 (Spark-shell内部调用Spark-submit,其中spark-submit是所有spark作业的启动板)
复制前(注意:第1行表示正在使用log4j-defaults)
C:\Users\ramisetty\Desktop>spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
15/08/07 13:01:10 INFO SecurityManager: Changing view acls to: ramisetty
15/08/07 13:01:10 INFO SecurityManager: Changing modify acls to: ramisetty
将log4j.properties.template复制到log4j.propertie 后(意味着:忽略log4j.defaults并选择log4j.properties)
C:\Users\ramisetty\Desktop>spark-shell
15/08/07 13:12:37 INFO SecurityManager: Changing view acls to: ramisetty
15/08/07 13:12:37 INFO SecurityManager: Changing modify acls to: ramisetty
要检查更精确。
将log4j.rootCategory = INFO ,将log4j.properties中的控制台更改为log4j.rootCategory = WARN ,控制并观察日志记录中的更改....
答案 2 :(得分:0)
略微扩展@ ThatiK非常有用的答案:如果要从资源而不是普通文件加载日志属性文件,可以执行以下操作(source):
import java.util.Properties
import org.apache.log4j.PropertyConfigurator
val props = new Properties()
props.load(getClass.getClassLoader.getResourceAsStream("conf/log4j.properties"))
PropertyConfigurator.configure(props)
答案 3 :(得分:0)
我在scala代码中遇到了问题(spark-shell的log4j.properties正常运行没有问题)。 由于时间不足,并且考虑到我只是在笔记本电脑上进行一些本地实验,并且不想更改许多小的教学程序,因此我进行了一次非常肮脏和快速的破解:修改了jar中的log4j-defaults.properties文件通过第一条诊断消息:
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
很明显我感到内,希望我的孩子永远不会知道这件事:-),但这很快且很容易(并且只在本地处理非生产代码)