Failed to load class "org.slf4j.impl.StaticLoggerBinder" spark

问题描述:

        在使用spark-shell 时,开启的是本地模式,执行加载数据的命令报错

scala> val usersDF = spark.read.load("/opt/module/datas/users.parquet")
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.
usersDF: org.apache.spark.sql.DataFrame = [name: string, favorite_color: string ... 1 more field]

         虽然也成功执行了,但是这个错误信息看着也还是挺揪心的,所以尝试解决。

解决方式:

        网上搜索 “Failed to load class "org.slf4j.impl.StaticLoggerBinder" 看到的解决办法基本上都是 maven 环境下依赖的配置问题,与我这里不算太契合,但是也有参考意义;

      官网上刊登的解决办法是:

        This error is reported when the org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory. This happens when no appropriate SLF4J binding could be found on the class path. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.

翻译过来如下所示:

         这个错误是当org.slf4j.impl报道。StaticLoggerBinder类不能被加载到内存中。发生这种情况时,无法找到合适的SLF4J绑定类路径。slf4j-nop.jar放置一个(且只有一个), slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar 或 logback-classic.jar 的类路径应该解决这个问题。

        所以说解决的办法就是随便将一个上述的包文件(只有选一个)放到spark的默认jar包存放的目录即可,我的是“slf4j-nop-1.7.2.jar”包文件的依赖。

       有了方法之后现在就要去下载这个jar包,去到 SLF4J 官网,页面如下:

Failed to load class

          但是发现怎么都找不到 jar 包的下载地址,很无奈。这时候 IDEA 配置依赖的方式提醒了我,就让 IDEA 帮我下,我再去拿这个jar包不就好了。

       说干就干,在IDEA的pom文件肿添加如下依赖:

        
            org.slf4j
            slf4j-nop
            1.7.2
        

        等它下载完成后,找到这个jar包的位置,注意,我这里是配置了maven的仓库:

Failed to load class

       拿到之后直接上传到 Linux 系统下 spark  的目录下:

/opt/module/spark-2.1.0-bin-hadoop2.7/jars

        查看是否上传成功:

      成功上传后再次执行加载数据的命令:

     错误消失,成功解决。

 

 

 

 

 

 

你可能感兴趣的:(错误处理,java,spark,jar)