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

使用SBT部署提交Spark程序时遇org.apache包不存在错误求助

解决Spark + SBT编译错误:object apache is not a member of package org

问题根源拆解

你遇到的编译报错,主要是由代码语法错误、SBT配置拼写失误和依赖仓库配置不全这三个问题共同导致的,咱们一步步来修复。

分步解决办法

1. 修正代码的语法错误

你的Scala代码里把package和import写在了同一行,这会让编译器错误地把import当成包名的一部分,自然找不到org.apache.spark这个正确的包路径。

修正后的代码:

package in.goai.spark

import org.apache.spark.{SparkContext, SparkConf}

object SparkMeApp {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("First Spark")
    val sc = new SparkContext(conf)
    val fileName = args(0)
    val lines = sc.textFile(fileName).cache
    val c = lines.count
    println(s"There are $c lines in $fileName")
  }
}

2. 修复build.properties的拼写错误

你在first/project/build.properties里把sbt.version写成了bt.version,这会导致SBT无法加载你指定的版本,进而影响依赖包的解析。

修正后的build.properties:

sbt.version=0.13.9

3. 完善build.sbt的依赖配置

你的配置里只加了本地Maven仓库,如果本地没有缓存Spark的依赖包,就会拉取不到。咱们补上Maven中央仓库,确保依赖能正常下载。

修正后的build.sbt:

name := "First Spark"
version := "1.0"
organization := "in.goai"
scalaVersion := "2.11.8"

// 同时启用本地仓库和中央仓库,保证依赖能拉取到
resolvers ++= Seq(
  Resolver.mavenLocal,
  Resolver.mavenCentral
)

// %%会自动匹配当前项目的Scala版本,无需手动写_2.11
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"

4. 重新执行编译打包

先清理之前的编译缓存,再执行打包命令:

sbt clean package

额外优化建议

如果后续要把jar包提交到Spark集群运行,建议把Spark依赖的scope设置为provided——因为集群环境已经自带Spark的核心依赖,这样能避免打包出体积过大的jar包:

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1" % "provided"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:13:45