Spark程序运行抛出NoSuchMethodError异常,请求协助修复
解决Spark运行时
NoSuchMethodError: scala.Predef$.$scope()异常 这个异常的核心根源是依赖版本不匹配,具体有两个关键问题:
- Spark核心组件(spark-core和spark-sql)的Scala版本后缀不一致(一个是
_2.10,另一个是_2.11) - 存在重复且版本冲突的Scala XML依赖,导致类加载逻辑混乱
下面是针对性的修复步骤:
1. 统一Spark组件的Scala版本
Spark依赖的artifactId后缀_2.xx对应着适配的Scala版本,必须保证所有Spark组件使用相同的Scala版本后缀。你的Scala library用的是2.11.x,所以把spark-core_2.10改成spark-core_2.11,版本保持2.2.0不变。
2. 清理冲突的Scala XML依赖
你的POM里同时引入了非版本化后缀的scala-xml和scala-xml_2.11,这会引发依赖冲突。保留scala-xml_2.11即可,删除旧的scala-xml依赖。
3. 匹配Scala Library与Spark的兼容版本
Spark 2.2.0官方推荐搭配Scala 2.11.8(而非2.11.0),调整scala-library版本到2.11.8可以避免潜在的兼容性问题。
修正后的完整POM依赖:
<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.11.8</version> </dependency> <dependency> <groupId>org.scala-lang.modules</groupId> <artifactId>scala-xml_2.11</artifactId> <version>1.0.6</version> </dependency> </dependencies>
额外检查项
- 确认
G:\\users\\student.json路径正确,文件存在且是合法的JSON格式(要求每行一个独立JSON对象,而非JSON数组) - 在Eclipse中执行
Maven > Update Project,清理旧的依赖缓存,确保新依赖被正确加载
内容的提问来源于stack exchange,提问作者user3103957
相关产品推荐
相关产品推荐

