我刚刚开始使用 Spark,所以从这里for Hadoop 1 (HDP1, CDH3)
下载了二进制文件并将其提取到 Ubuntu VM 上。在不安装 Scala 的情况下,我能够从 Spark 交互式 shell执行快速入门指南中的示例。
- Spark 是否包含在 Scala 中?如果是,库/二进制文件在哪里?
- 为了在其他模式(分布式)下运行 Spark,我是否需要在所有节点上安装 Scala?
作为旁注,我观察到 Spark 拥有围绕开源项目的最佳文档之一。
我刚刚开始使用 Spark,所以从这里for Hadoop 1 (HDP1, CDH3)
下载了二进制文件并将其提取到 Ubuntu VM 上。在不安装 Scala 的情况下,我能够从 Spark 交互式 shell执行快速入门指南中的示例。
作为旁注,我观察到 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。
普拉文 -
现在检查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 Entries
如果您下载了 pre build spark ,那么您不需要在节点中有 scala,只需节点中 CLASSAPATH 中的这个文件就足够了。
注意:删除了我发布的最后一个答案,因为它可能会误导某些人。对不起 :)
您确实需要 Scala 在所有节点上都可用。但是,通过make-distribution.sh进行二进制分发,不再需要在所有节点上安装Scala。请记住安装运行 REPL 所必需的 Scala 与仅将 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 构建