Scala 如何使用不同于Cloudera'中使用的Spark版本;s CDH集群?
我使用安装了Apache SparkScala 如何使用不同于Cloudera'中使用的Spark版本;s CDH集群?,scala,apache-spark,sbt,sbt-assembly,Scala,Apache Spark,Sbt,Sbt Assembly,我使用安装了Apache Spark2.1.0.cloudera1的Cloudera群集,但我需要Apache Spark git存储库中最新提交的一个新类: 我只是将整个文件复制粘贴到我的sbt scala项目中,但我不知道如何创建sbt assembly MergeStrategy以排除集群提供的类: org.apache.spark.mllib.linalg.distributed.BlockMatrix 从 并使用新添加的项目类 我的sbt.build文件: val sparkVer
2.1.0.cloudera1
的Cloudera群集,但我需要Apache Spark git存储库中最新提交的一个新类:
我只是将整个文件复制粘贴到我的sbt scala项目中,但我不知道如何创建sbt assembly MergeStrategy以排除集群提供的类:
org.apache.spark.mllib.linalg.distributed.BlockMatrix
从
并使用新添加的项目类
我的sbt.build文件:
val sparkVersion = "2.1.0.cloudera1"
lazy val providedDependencies = Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.apache.spark" %% "spark-mllib" % sparkVersion
)
libraryDependencies ++= providedDependencies.map(_ % "provided")
assemblyMergeStrategy in assembly := {
case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
case PathList("org", "apache", "spark", "unused", "UnusedStubClass.class") => MergeStrategy.first
case _ => MergeStrategy.first
}
如果您想使用与您环境中使用的版本不一致的Spark,只需将所有Spark依赖项
sbt assembly
放在一个uber jar中,然后Spark提交它即可
安装并拆下标记火花相关性的线提供的
(这表示将火花相关性从组件中排除,这与我们的目标正好相反)
您必须使用正确版本的Spark,也就是说,下一行也应该更改(以反映有问题的BlockMatrix.scala
版本)
您可能也希望使用本地构建的Spark。关键是要将所有依赖项放在一个uber jar中,这些依赖项应该覆盖部署环境中的内容。好的,谢谢,但是是否可以从新库中只复制一个类(带有原始包),这样我就可以避免通过ssh发送胖jar?我不这么认为。它可以工作,但我认为这是巧合。
val sparkVersion = "2.1.0.cloudera1"
lazy val providedDependencies = Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.apache.spark" %% "spark-mllib" % sparkVersion
)
libraryDependencies ++= providedDependencies.map(_ % "provided")
assemblyMergeStrategy in assembly := {
case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
case PathList("org", "apache", "spark", "unused", "UnusedStubClass.class") => MergeStrategy.first
case _ => MergeStrategy.first
}
libraryDependencies ++= providedDependencies.map(_ % "provided")
val sparkVersion = "2.1.0.cloudera1"