【问题标题】:How to build Spark 1.6.1 with SBT on Windows using Hadoop profiles?如何使用 Hadoop 配置文件在 Windows 上使用 SBT 构建 Spark 1.6.1?
【发布时间】:2016-09-05 05:57:04
【问题描述】:

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

>sbt package

上述代码有效,但无法使用以下内容激活配置文件:

>sbt -Pyarn package

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

【问题讨论】:

  • 我有两个问题。 1. 为什么需要在Windows上重建spark?为什么不使用 Spark 站点中可用的预构建二进制版本之一? 2. 在 Windows 中,您如何尝试启动 sbt 和构建过程?你在使用 PowerShell,例如 Cygwin?
  • 回答第一个问题通常会引发关于“你为什么要做你想做的事”的巨大争论,所以如果你不介意,我会避免这种情况。我只是从一个简单的终端调用sbt 命令。
  • 我会推荐@Vitaliy Kotlyarenko提到的同样的东西,sbt并不意味着支持maven配置文件,所以你需要使用sbt自带的Spark源代码

标签: apache-spark build sbt profiles


【解决方案1】:

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

enableProfile () {
  dlog "[enableProfile] arg = '$1'"
  maven_profiles=( "${maven_profiles[@]}" "$1" )
  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 "$0")")"/sbt-launch-lib.bash

. "$(dirname "$(realpath "$0")")"/build/sbt-launch-lib.bash

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2015-09-01
    • 1970-01-01
    • 2011-09-15
    相关资源
    最近更新 更多