Exception in thread “main“ java.lang.NoSuchMethodError: scala.reflect.ClassT
运行环境:IntelliJ + scala + spark +hadoop出错原因:IntelliJ 中的scala版本与Spark 自带的scala版本不同导致我刚开始以为只要把IntelliJ 里的scala 版本配置与虚拟机配置的scala版本一致就行,后来发现不是这样,是要把IntelliJ 中的scala版本与Spark 自带的scala版本一致才行,不是虚拟机里的。比如说,我虚拟机里配
运行环境:IntelliJ + scala + spark +hadoop
出错原因:IntelliJ 中的scala版本与Spark 自带的scala版本不同导致
我刚开始以为只要把IntelliJ 里的scala 版本配置与虚拟机配置的scala版本一致就行,后来发现不是这样,是要把IntelliJ 中的scala版本与Spark 自带的scala版本一致才行,不是虚拟机里的。
比如说,我虚拟机里配置的scala版本是2.13.3,而安装的Spark自带版本是2.12.10,IntelliJ 里的scala版本应该与Spark自带的版本相同才行,都是2.12.10
虚拟机查看Spark自带安装版本:
/app/Spark/spark-3.0.1-bin-hadoop3.2/jars
也即在Spark安装目录下的jars目录下查看,我的路径是/app/Spark/spark-3.0.1-bin-hadoop3.2
更改IntelliJ scala版本,与Spark自带的scala版本一致
注意:此处IntelliJ已经安装了scala插件,只是版本不同,需要更换而已
1. 下载scala
File -> Project Structure -> Global Libraries -> 点击左上角“+” ->
Scala SDK -> 点击Download ->选择自己想要的版本下载(可能要一会,不
过下载的也就那几个文件)
2. 更换版本
File -> Project Structure -> Global Libraries ->
选择下载后的scala -> 右击选中,删除之前下载的scala
注意:这里一定要把之前版本删除了,包括Libraries里的和Global Libraries里的,我这里之前的没删,又加载了后面下的scala插件,结果import org.apache.spark.{SparkConf,SparkContext}不成功,后来清除干净,退出重进好了
Libraries里的删除同理一样
添加新的scala插件
File -> Project Strcuture -> Libraries -> 点击左上角“+” -> Scala SDK
-> 选择对应版本 ->点击OK
3.更改pom.xml里scala版本
<properties>
<scala.version>2.12.10</scala.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
spark-core插件版本获取见:https://mvnrepository.com/search?q=spark-core
输入spark-core ,点击第一个Spark Project Score,点击对应版本,复制Maven里面的内容到pom.xml里
总结的可能不到位,只是个人实验过程中遇到的问题
参考
Exception in thread “main” java.lang.NoSuchMethodError: scala.Predef$
虽然这个是windows下的Spark集群,但是解决问题的方法都是异曲同工
Windows下IDEA运行scala版本的spark程序(踩坑总结)
更多推荐
所有评论(0)