【发布时间】:2019-04-26 00:54:49
【问题描述】:
我在 intellij idea 2017.1.6 ide 中为我的 spark scala 项目使用 SBT 1.8.0。我想创建一个父项目及其子项目模块。到目前为止,这就是我在 build.sbt 中的内容:
lazy val parent = Project("spark-etl-parent",file("."))
.settings(
name := "spark-etl-parent_1.0",
scalaVersion := "2.11.1",
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-streaming" % sparkVersion % "provided"
"org.apache.spark" %% "spark-hive" % sparkVersion % "provided")
)
lazy val etl = Project("spark-etl-etl",file("etl"))
.dependsOn(parent)
.settings(
name := "spark-etl-etl_1.0",
version := "1.0",
scalaVersion := "2.11.1"
)
lazy val redshiftBasin = Project("spark-etl-
redshiftBasin",file("redshiftBasin"))
.dependsOn(parent)
.settings(
name := "spark-etl-redshiftBasin_1.0",
version := "1.0",
scalaVersion := "2.11.1"
)
lazy val s3Basin = Project("spark-etl-s3Basin",file("s3Basin"))
.dependsOn(parent)
.settings(
name := "spark-etl-s3Basin_1.0",
version := "1.0",
scalaVersion := "2.11.1"
)
现在我可以从父模块中的 spark-streaming 或 spark-hive 库依赖项中导入任何类,但无法在任何子模块中导入和使用它们。只有当我在任何子模块中明确地将它们指定为库依赖项时,我才能使用它们。
- 我正在使用 Maven 构建在 pom.xml 中寻找类似于依赖项标记的内容。
- 如果我为每个子模块使用单独的 build.sbt 会有什么不同吗?
- 此外,如果我在父配置中执行 .aggregate(etl),它会显示错误,因为稍后会声明 etl。但是,如果我在父级之前定义 etl,我将无法在 etl 配置中执行 .dependsOn(parent) 。
请帮助我解决这些问题。
【问题讨论】:
标签: scala apache-spark module sbt