Idea運行時Scala報錯Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V


一.情況描述

使用idea +scala+spark,運行程序代碼如下:

package cn.idcast.hello

import org.apache.spark.rdd.RDD
import org.apache.spark
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

/**
 * Author itcast
 * Desc 演示Spark入門案例-WordCount
 */
object WordCount_bak {
  def main(args: Array[String]): Unit = {
    //TODO 1.env/准備sc/SparkContext/Spark上下文執行環境
    val conf: SparkConf = new SparkConf().setAppName("wc").setMaster("local[*]")
    val sc: SparkContext = new SparkContext(conf)
    sc.setLogLevel("WARN")

    //TODO 2.source/讀取數據
    //RDD:A Resilient Distributed Dataset (RDD):彈性分布式數據集,簡單理解為分布式集合!使用起來和普通集合一樣簡單!
    //RDD[就是一行行的數據]
    val lines: RDD[String] = sc.textFile("data/input/words.txt")

    //TODO 3.transformation/數據操作/轉換
    //切割:RDD[一個個的單詞]
    val words: RDD[String] = lines.flatMap(_.split(" "))
    //記為1:RDD[(單詞, 1)]
    val wordAndOnes: RDD[(String, Int)] = words.map((_,1))
    //分組聚合:groupBy + mapValues(_.map(_._2).reduce(_+_)) ===>在Spark里面分組+聚合一步搞定:reduceByKey
    val result: RDD[(String, Int)] = wordAndOnes.reduceByKey(_+_)

    //TODO 4.sink/輸出
    //直接輸出
    result.foreach(println)
    //收集為本地集合再輸出
    println(result.collect().toBuffer)
    //輸出到指定path(可以是文件/夾)
    result.repartition(1).saveAsTextFile("data/output/result")
    result.repartition(2).saveAsTextFile("data/output/result2")
    result.saveAsTextFile("data/output/result3")

    //為了便於查看Web-UI可以讓程序睡一會
    Thread.sleep(1000 * 60)

    //TODO 5.關閉資源
    sc.stop()
  }
}

(忘記截圖)結果報錯:Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

網上說是,jar包沖突,但是並沒有解決問題


二.解決方案

問題根源:windows的scala版本與spark自帶的scala版本不一致,如圖所示:

這是spark自帶的版本為2.12.10

 而我在windows裝的是2.12.11(忘記截圖),后來更換為2.12.10(重新安裝:IDEA安裝配置Scala環境):

 之后運行成功,沒有報錯

最近老是遇到這種版本錯誤,難受😔

 

 

 

參考文章:https://www.pianshen.com/article/1399177290/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM