使用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版本来解决,以后遇到这个的具体起因会回来更新,并给出具体详细解决办法。若有经验者,望不吝赐教。