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 官網,頁面如下:

          但是發現怎麼都找不到 jar 包的下載地址,很無奈。這時候 IDEA 配置依賴的方式提醒了我,就讓 IDEA 幫我下,我再去拿這個jar包不就好了。

       說幹就幹,在IDEA的pom文件腫添加如下依賴:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.2</version>
        </dependency>

        等它下載完成後,找到這個jar包的位置,注意,我這裏是配置了maven的倉庫:

       拿到之後直接上傳到 Linux 系統下 spark  的目錄下:

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

        查看是否上傳成功:

      成功上傳後再次執行加載數據的命令:

     錯誤消失,成功解決。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章