You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提交Scala Spark项目时SparkSession类找不到问题求助

解决Scala Spark项目中org.apache.spark.sql.SparkSession$类找不到的问题

以下是针对这个ClassNotFoundException的常见排查和解决方法:

  • 确认Spark版本匹配
    SparkSession是Spark 2.x及以上版本引入的API,若本地项目依赖的Spark版本与运行集群的Spark版本不一致,就会触发该错误。比如本地用3.x版本,集群却是1.x,或者反过来。
    解决:在项目构建文件(如sbt的build.sbt)中指定和集群一致的Spark版本,并且标记为Provided(因为集群环境已包含Spark依赖,无需打包到项目jar中):

    libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.3.0" % Provided
    

    替换3.3.0为你集群实际的Spark版本。

  • 检查打包配置
    若使用sbt assembly等插件打包,可能误将Spark核心依赖打包进项目jar,导致和集群的依赖冲突,或者缺失必要的类。
    解决:在assembly配置中排除Spark相关依赖,避免重复打包:

    assemblyExcludedJars in assembly := {
      val cp = (fullClasspath in assembly).value
      cp.filter { jar =>
        jar.data.getName.startsWith("spark-") || jar.data.getName.startsWith("hadoop-")
      }
    }
    
  • 修正spark-submit命令参数
    如果集群环境没有默认包含Spark SQL依赖(这种情况较少见,但可能存在),需要在提交时显式引入:

    spark-submit --packages org.apache.spark:spark-sql_2.12:3.3.0 your-project.jar
    

    替换版本号为集群对应的版本,2.12是Scala版本,要和项目的Scala版本保持一致。

  • 验证集群Spark依赖完整性
    检查集群的Spark安装目录下lib文件夹,确认存在spark-sql_*.jar文件,并且文件权限正常,确保集群的ClassLoader能加载到这个类。

内容的提问来源于stack exchange,提问作者Gaurav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:45:32