运行环境: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$

idea运行的时候出现的问题Exception in thread “main” java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$

虽然这个是windows下的Spark集群,但是解决问题的方法都是异曲同工
Windows下IDEA运行scala版本的spark程序(踩坑总结)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐