如何在Windows上以独立模式设置Spark log4j路径?

时间:2015-08-06 17:13:26

标签: apache-spark log4j

我已经尝试将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");

4 个答案:

答案 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

很明显我感到内,希望我的孩子永远不会知道这件事:-),但这很快且很容易(并且只在本地处理非生产代码)