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

如何通过SBT维护多项目模块 分别依赖Apache Spark 2.3与2.4

SBT多模块维护不同Spark版本依赖方案

项目层级设计

推荐采用平级独立子模块的目录结构,两个Spark业务模块完全隔离,避免依赖交叉冲突,可按需新增无Spark依赖的公共模块存放共享逻辑:

your-project-root/
├── build.sbt                # 全局SBT配置文件
├── project/
│   └── build.properties     # 指定SBT版本,建议使用1.5.x及以上稳定版本
├── common/                  # 可选:无Spark依赖的公共工具模块
│   └── src/
│       ├── main/
│       └── test/
├── spark23-module/          # 依赖Spark 2.3的业务模块
│   └── src/
│       ├── main/
│       └── test/
└── spark24-module/          # 依赖Spark 2.4的业务模块
    └── src/
        ├── main/
        └── test/

build.sbt 配置示例

无需在全局作用域声明Spark依赖,两个子模块各自配置专属的Spark版本即可,公共模块不绑定任何Spark版本:

// 全局统一Scala版本,Spark 2.3、2.4均兼容Scala 2.11
ThisBuild / scalaVersion := "2.11.12"
ThisBuild / organization := "com.your.company"

// 可选:公共工具模块,无Spark依赖,两个业务模块均可引用
lazy val common = (project in file("common"))
  .settings(
    name := "common-utils",
    version := "1.0.0",
    libraryDependencies ++= Seq(
      // 公共依赖,比如JSON工具、加密工具等
      "com.alibaba" % "fastjson" % "1.2.83"
    )
  )

// Spark 2.3 业务模块配置
lazy val spark23Module = (project in file("spark23-module"))
  .dependsOn(common) // 可选:依赖公共模块
  .settings(
    name := "spark23-business",
    version := "1.0.0",
    libraryDependencies ++= Seq(
      "org.apache.spark" %% "spark-core" % "2.3.3" % Provided,
      "org.apache.spark" %% "spark-sql" % "2.3.3" % Provided,
      // 该模块其他专属依赖
    )
  )

// Spark 2.4 业务模块配置
lazy val spark24Module = (project in file("spark24-module"))
  .dependsOn(common) // 可选:依赖公共模块
  .settings(
    name := "spark24-business",
    version := "1.0.0",
    libraryDependencies ++= Seq(
      "org.apache.spark" %% "spark-core" % "2.4.8" % Provided,
      "org.apache.spark" %% "spark-sql" % "2.4.8" % Provided,
      // 该模块其他专属依赖
    )
  )

使用注意事项

  • 编译、打包、测试操作均按模块独立执行,比如打包Spark2.3模块执行 sbt spark23Module/assembly,打包Spark2.4模块执行 sbt spark24Module/assembly,完全互不干扰
  • Spark依赖统一标记为Provided,提交到Yarn集群运行时避免和集群自带的SparkJar产生冲突
  • 若无需公共逻辑,可直接删除common模块的相关配置,不影响两个业务模块的独立运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:06:06