繁体   English   中英

Scala对Spark安装的依赖性

[英]Scala dependency on Spark installation

我刚开始使用Spark,所以从这里下载了for Hadoop 1 (HDP1, CDH3)二进制文件,并在Ubuntu VM上提取它。 在没有安装Scala的情况下,我能够从Spark交互式shell中执行快速入门指南中的示例。

  1. Spark包含Scala吗? 如果是,库/二进制文件在哪里?
  2. 为了在其他模式(分布式)中运行Spark,我是否需要在所有节点上安装Scala?

作为旁注,我观察到Spark拥有围绕开源项目的最佳文档之一。

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

项目配置放在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文档中的描述创建单个程序集jar

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

Praveen -

现在检查一下fat-master jar。

/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> environment> Classpath条目

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

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

您确实需要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确实会出现这种情况

从spark 1.1开始,没有SparkBuild.scala您需要在pom.xml中进行更改并使用Maven构建

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM