Scala对Spark安装的依赖性

时间:2014-01-24 11:13:36

标签: scala apache-spark

我刚刚开始使用Spark,所以从here下载了for Hadoop 1 (HDP1, CDH3)个二进制文件并将其解压缩到Ubuntu VM上。在没有安装Scala的情况下,我能够从Spark交互式shell中执行Quick Start指南中的示例。

  1. Spark包含Scala吗?如果是,库/二进制文件在哪里?
  2. 为了在其他模式(分布式)中运行Spark,我是否需要在所有节点上安装Scala?
  3. 作为旁注,我发现Spark拥有围绕开源项目的最佳文档之一。

4 个答案:

答案 0 :(得分:4)

Scala包含Spark吗?如果是,库/二进制文件在哪里?

项目配置位于project/文件夹中。我的情况是:

$ ls project/
build.properties  plugins.sbt  project  SparkBuild.scala  target

执行sbt/sbt assembly时,会下载适当版本的Scala以及其他项目依赖项。签出文件夹target/,例如:

$ ls target/
scala-2.9.2  streams

请注意,Scala版本对我来说是2.9.2。

为了在其他模式(分布式)中运行Spark,我是否需要在所有节点上安装Scala?

是。您可以按照Spark documentation

中的说明创建单个装配jar
  

如果您的代码依赖于其他项目,则需要确保它们也存在于从属节点上。一种流行的方法是创建一个包含代码及其依赖项的程序集jar(或“uber”jar)。 sbt和Maven都有汇编插件。创建程序集jar时,将Spark本身列为提供的依赖项;它不需要捆绑,因为它已经存在于奴隶上。一旦你有一个组装的jar,把它添加到SparkContext,如下所示。在创建SparkContext时,也可以逐个提交您的从属jar。

答案 1 :(得分:3)

Praveen -

现在检查了胖主罐。

/SPARK_HOME/assembly/target/scala-2.9.3/spark-assembly_2.9.3-0.8.0-incubating-hadoop1.0.4.jar

这个jar包含在所有scala二进制文件+ spark二进制文件中。

您可以运行,因为当您运行spark-shell

时,此文件已添加到您的CLASSPAH中

点击此处:运行spark-shell> http:// machine:4040>环境>类路径条目

如果您下载了pre build spark,那么您不需要在节点中使用scala,只需在节点中的CLASSAPATH中使用此文件即可。

注意:删除我发布的最后一个答案,因为它可能会误导某个人。抱歉:)

答案 2 :(得分:1)

您需要Scala才能在所有节点上使用。但是,通过make-distribution.sh进行二进制分发,不再需要在所有节点上安装 Scala。请记住安装 Scala(运行REPL所必需的)与打包 Scala只是另一个jar文件之间的区别。

另外,如文件中所述:

# The distribution contains fat (assembly) jars that include the Scala library,
# so it is completely self contained.
# It does not contain source or *.class files.

因此,当您使用 make-distribution.sh 时,Scala确实会出现这种情况。

答案 3 :(得分:0)

从spark 1.1开始,没有Spark Build.scala 您必须在pom.xml中进行更改并使用Maven构建