我刚刚开始使用Spark,所以从here下载了for Hadoop 1 (HDP1, CDH3)
个二进制文件并将其解压缩到Ubuntu VM上。在没有安装Scala的情况下,我能够从Spark交互式shell中执行Quick Start指南中的示例。
作为旁注,我发现Spark拥有围绕开源项目的最佳文档之一。
答案 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构建