AssemblyKeys用于什么,以及如何导入它们?

时间:2014-10-04 15:39:12

标签: scala sbt apache-spark

在最近流行的sbt应用https://github.com/databricks/reference-apps中,我找到了一条要求我

的行
import AssemblyKeys._ 

此行不在SBT或我的IntelliJ IDEA中编译。

使用的导入是什么以及为什么必要?

3 个答案:

答案 0 :(得分:5)

使用最新版本,我们不再需要导入AssemblyKeys._

检查升级指南here

答案 1 :(得分:3)

查看sbt-assembly插件。

你基本上需要

  • 在您的sbt项目的assembly.sbt文件夹下,将以下行添加到文件中,例如*.sbt(或实际上任何project文件):

    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
    
  • 将导入行放在build.sbt的顶部(在project子目录所在的目录中)。

    import AssemblyKeys._
    

使用上述文件,最基本的项目结构应如下所示:

➜  myProjectName  tree
.
|-- build.sbt
`-- project
    `-- assembly.sbt

1 directory, 2 files

答案 2 :(得分:2)

The other answer by @mfirry几乎可以回答构建(定义)带来的import AssemblyKeys._部分。这是sbt-assembly插件(引用the docs of the plugin):

  

使用所有依赖项创建项目的胖JAR。

插件需要它来完成它的工作。

你可能会问自己为什么我需要这个插件。

由于你没有引用需要导入的应用程序,因此没有引用插件,我也没有查看这些示例,我只能猜测公司Databricks是Apache Spark背后的商业实体示例使用。

为了将应用程序部署到Apache Spark集群上,您需要汇编整个应用程序并配置工作人员,以便他们可以访问二进制文件(具有必要的依赖关系,即jar)。这是sbt-assembly插件的目的,打包所有并提供单个应用程序jar,以便Spark可以使用。请参阅Apache Spark文档中的Standalone Applications以了解独立案例(无集群环境):

  

为了让sbt正常工作,我们需要布局SimpleApp.scala和   simple.sbt根据典型的目录结构。一旦那样   在适当的位置,我们可以创建一个包含应用程序的JAR包   代码,然后使用spark-submit脚本运行我们的程序。

您可能需要阅读Cluster Mode Overview以概述如何将Spark应用程序部署到Spark群集。