如何使用 Hadoop 配置文件在 Windows 上使用 SBT 构建 Spark 1.6.1?

How to build Spark 1.6.1 with SBT on Windows using Hadoop profiles?

如何在 Windows (8-10) 上使用 SBT 构建 Spark 时激活 Hadoop 和 YARN 配置文件?

>sbt package

以上代码有效,但无法激活以下配置文件:

>sbt -Pyarn package

我在问,因为 mvn 与 SBT 相比特别慢。我有使用 SBT 和 Maven 在 Linux 上构建 Spark 的经验。

您必须使用与 Spark 源代码分发捆绑在一起的 ./build/sbt 脚本。它调用另一个脚本 sbt-launch-lib.bash 执行一些与配置文件相关的魔术:

enableProfile () {
  dlog "[enableProfile] arg = ''"
  maven_profiles=( "${maven_profiles[@]}" "" )
  export SBT_MAVEN_PROFILES="${maven_profiles[@]}"
}

另一方面,项目定义 SparkBuild 扩展 PomBuild,允许使用 Maven 项目(包括配置文件):

override val profiles = {                                                                                                              
  val profiles = Properties.envOrNone("SBT_MAVEN_PROFILES") match {                                                                    
    ...
  }                                                                                                                             
  profiles                                                                                                                             
}    

所以如果你 运行 它应该可以工作(使用 Cygwin):

sh build/sbt -Pyarn package

然而,由于 sbt-launch-lib.bash 的路径发现不正确,它对我来说开箱即用。所以我在 build\sbt 中替换了一行:

. "$(dirname "$(realpath "[=13=]")")"/sbt-launch-lib.bash

. "$(dirname "$(realpath "[=14=]")")"/build/sbt-launch-lib.bash