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

Spark调用requests-scala报NoClassDefFoundError问题求助

解决Spark运行时java.lang.NoClassDefFoundError: requests/package$问题

问题原因

这个错误是因为运行时找不到requests-scala包的类文件。sbt package默认只打包你的项目代码,不会将依赖库一起打包,导致Spark集群运行时无法加载缺失的依赖类。

解决方案

1. 打包包含所有依赖的胖JAR(推荐)

使用sbt-assembly插件生成胖JAR,把项目代码和所有依赖打包在一起:

  • 在项目的project/plugins.sbt中添加插件:
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0")
    
  • 执行打包命令:
    sbt assembly
    
  • 找到生成的胖JAR(通常在target/scala-<你的Scala版本>/目录下,文件名包含-assembly后缀),用spark-submit运行:
    spark-submit --class 你的主类全路径 路径/xxx-assembly-xxx.jar
    

2. 提交时直接指定依赖

如果不想打包胖JAR,可以在spark-submit命令中通过--packages参数引入requests-scala依赖:

spark-submit --class 你的主类全路径 --packages com.lihaoyi:requests_2.12:0.8.0 路径/你的普通JAR包.jar

注意:命令中的2.12要和你的Scala版本匹配,比如Spark 2.x通常用Scala 2.11,Spark 3.x用2.12,需对应修改。

3. 确认build.sbt配置正确性

检查build.sbt中的Scala版本和依赖配置,确保和Spark使用的Scala版本一致:

scalaVersion := "2.12.15" // 匹配你的Spark对应的Scala版本
libraryDependencies += "com.lihaoyi" %% "requests" % "0.8.0"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 13:12:06