Exception in thread main java.lang.NoSuchMethodError: scala.Predef$
生活随笔
收集整理的這篇文章主要介紹了
Exception in thread main java.lang.NoSuchMethodError: scala.Predef$
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用intelli idea +scala+spark,運行程序代碼如下:
package cn.limbo.sparkimport org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD/*** 使用Scala開發本地測試的Spark WordCount程序*/ object WordCount {def main(args: Array[String]): Unit = {/*** 第一步:創建Spark的配置對象SparkConf,設置Spark程序的運行時的配置信息* 例如說通過setMaster來設置程序要連接的Spark集群的Master的URL* 如果設置為local,則代表Spark程序在本地運行,特別適合于配置條件的較差的人**/val conf = new SparkConf()conf.setAppName("MyFirstSparkApplication") //設置應用程序的名稱,在程序運行的監控界面可以看到名稱conf.setMaster("local") //此時程序在本地運行,無需安裝Spark的任何集群/*** 第二步:創建SparkContext對象* SparkContext是Spark程序所有功能的唯一入口,無論是采用Scala,Java,Python等都必須有一個SparkContext* SparkContext核心作用:初始化Spark應用程序運行所需要的核心組件,包括DAGScheduler,TaskScheduler,Scheduler* 同時還會負責Spark程序往Master注冊程序等* SparkContext是整個Spark應用程序中最為至關重要的一個對象。*/val sc = new SparkContext(conf) //創建SparkContext對象,通過傳入SparkConf實例來定制Spark運行的具體參數和配置信息/*** 第三步:根據具體的數據來源(HDFS,HBase,Local FS(本地文件系統) ,DB,S3(云上)等)通過SparkContext來創建RDD* RDD的創建基本有三種方式,根據外部的數據來源(例如HDFS),根據Scala集合,由其他的RDD操作產生* 數據會被RDD劃分成為一系列的Partitions,分配到每個Partition的數據屬于一個Task的處理范疇*///文件的路徑,最小并行度(根據機器數量來決定)//val lines:RDD[String]= sc.textFile("F://spark//spark-1.6.2-bin-hadoop2.6//README.md", 1) //讀取本地文件,并設置Partition = 1val lines= sc.textFile("D:\\Program\\spark-2.4.0-bin-hadoop2.7//README.md", 1) //讀取本地文件,并設置Partition = 1 //類型推導得出lines為RDD/*** 第四步:對初始的RDD進行Transformation級別的處理,例如map,filter等高階函數等的編程,來進行具體的數據計算* 4.1:將每一行的字符串拆分成單個的單詞* 4.2:在單詞拆分的基礎上對每個單詞的實例計數為1,也就是word =>(word,1)* 4.3:在每個單詞實例計數為1基礎之上統計每個單詞在文件出現的總次數*///對每一行的字符串進行單詞的拆分并把所有行的拆分結果通過flat合并成為一個大的單詞集合val words = lines.flatMap { line => line.split(" ") } //words同樣是RDD類型val pairs = words.map { word => (word,1) }val wordCounts = pairs.reduceByKey(_+_) //對相同的key,進行value的累加(包括Local和Reducer級別同時Reduce)wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 + " : " + wordNumberPair._2))sc.stop() //注意一定要將SparkContext的對象停止,因為SparkContext運行時會創建很多的對象/*這個程序運行之后一定會有一個錯誤,因為 沒有hadoop環境,這個不是程序錯誤,也不影響任何功能*/} }?問題根源:版本不一致,spark自帶的scala版本,如圖所示:
系統自帶的版本如圖所示:
?
?解決方案:
?
刪除原來系統安裝下版本,導入spark自帶的版本;?然后再運行就ok了;結果如圖所示:
總結
以上是生活随笔為你收集整理的Exception in thread main java.lang.NoSuchMethodError: scala.Predef$的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成功导入并运行breeze jar库
- 下一篇: 环境变量空格符号带来的坑