虽然这并没有阻止我的代码运行,但我只是想了解为什么会出现这种警告.我正在使用Scala 2.11.7,ScalaIDE,SBT 0.13.9.
15/11/20 12:17:05 INFO akka.event.slf4j.Slf4jLogger: Slf4jLogger started
15/11/20 12:17:06 INFO Remoting: Starting remoting
15/11/20 12:17:06 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriver@0.0.0.0:36509]
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[Stage 0:=======================================================> (31 + 1) / 32]
[Stage 0:=========================================================(32 + 0) / 32]
Run Code Online (Sandbox Code Playgroud)
现在我通常理解为什么会出现这个错误,但问题是我根本没有搞乱Spark的日志记录.现在,如果我将slf4j-simple添加到我的项目中,它会抱怨多个SLF4j绑定,但不会出现此警告.我无法为我的生活找到一种方法,使这两件事情都很好玩.我的代码本身使用log4j 2.4进行自己的日志记录.
我试过,但无济于事
如果我尝试排除Spark日志记录,我将从Spark获得ClassNotFound问题,但对于我的生活,我无法弄清楚到底是做什么的.
更多细节,我使用Spark,但我排除并包括我自己的Hadoop版本(2.7.1)
以下是我认为根据系统类加载器提供的相关罐子.
~/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.7.10.jar
~/.ivy2/cache/org.slf4j/slf4j-log4j12/jars/slf4j-log4j12-1.7.10.jar
~/.ivy2/cache/log4j/log4j/bundles/log4j-1.2.17.jar
~/.ivy2/cache/org.slf4j/jul-to-slf4j/jars/jul-to-slf4j-1.7.10.jar
~/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.10.jar
~/.ivy2/cache/com.typesafe.akka/akka-slf4j_2.11/jars/akka-slf4j_2.11-2.3.11.jar
~/.ivy2/cache/org.apache.logging.log4j/log4j-api/jars/log4j-api-2.4.1.jar
~/.ivy2/cache/org.apache.logging.log4j/log4j-core/jars/log4j-core-2.4.1.jar
~/.ivy2/cache/com.typesafe.akka/akka-slf4j_2.11/jars/akka-slf4j_2.11-2.4.0.jar
Run Code Online (Sandbox Code Playgroud)
有没有人对此有任何见解?我很感激.
log4j: Trying …Run Code Online (Sandbox Code Playgroud) 编辑此问题更加清晰,请参阅下面的评论以获得解释.
所以这对我来说似乎有点显而易见,但它看起来并不像那样,但是如果我有一个scala包对象并且它位于我的包的顶层.比如说com.company,它就像下面那样简单
package com
package object company{
val something = "Hello world."
}
Run Code Online (Sandbox Code Playgroud)
现在我觉得这个变量会流下来并且可以从它的子包中访问,但它们不是.
// 2 Layers down instead of the direct child
package com.company.app
import com.company._
object Model extends App {
println(something)
}
Run Code Online (Sandbox Code Playgroud)
这似乎只适用于导入,这很好,但我希望使用包对象,我可以为整个包定义顶级的东西并让它涓涓细流,但事实并非如此吗?这有什么办法吗?我很欣赏对此的任何见解.