使用IDEA工具運行Spark的WordCount時,運行報錯,報錯信息如下
Exception in thread "main" java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
at org.apache.spark.SparkConf$DeprecatedConfig.<init>(SparkConf.scala:810)
at org.apache.spark.SparkConf$.<init>(SparkConf.scala:644)
at org.apache.spark.SparkConf$.<clinit>(SparkConf.scala)
at org.apache.spark.SparkConf.set(SparkConf.scala:95)
at org.apache.spark.SparkConf.set(SparkConf.scala:84)
at org.apache.spark.SparkConf.setMaster(SparkConf.scala:116)
at fgdfgdf$.main(fgdfgdf.scala:8)
at fgdfgdf.main(fgdfgdf.scala)
由博客 https://www.cnblogs.com/zengsong-restService/p/10599007.html
https://blog.csdn.net/weixin_45568872/article/details/104325865
所說,大概原因為:當前idea引入的scala運行環境版本與idea默認的scala版本不一樣
失敗的做法一:1,同樣去查看本項目的Project Structure,點擊Libraries以及Global Libraries選項查看,顯示版本一致,scala版本為2.11.12
2,心存僥幸,嘗試修改Scala版本為2.12.10,結果無變化,依然報錯。遂,改回2.11.12版本。下圖為嘗試修改的Scala版本,均失敗告終。
成功的做法二:
pom.xml文件中,檢查Spark對應的依賴 如下:
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>2.4.3</version> </dependency>
嘗試把spark依賴改為2.4.4以及2.4.0版本,結果無變化,失敗
嘗試把spark依賴改為2.2.1版本,成功了!
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.2.1</version> </dependency>
不直接具體是何原因,大概是Scala版本與Spark版本不一致,沖突導致, 還只能降低spark版本來解決,以后遇到這個的具體起因會回來更新,並給出具體詳細解決辦法。若有經驗者,望不吝賜教。