【发布时间】:2016-01-07 01:48:34
【问题描述】:
我对 Scala 环境还很陌生。我在尝试使用 DataStax 连接器组装 Scala Spark 作业时收到 deduplicate 错误。如有任何建议可以解决此问题,我将不胜感激。
我的系统:
- 通过 brew 安装的最新 Scala (2.11.7)
- 通过 brew 安装的最新 Spark (2.10.5)
- 通过 brew 安装的最新 SBT (0.13.9)
- SBT Assembly 插件已安装
我的build.sbt:
name := "spark-test"
version := "0.0.1"
scalaVersion := "2.11.7"
// additional libraries
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.0" % "provided"
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "1.5.0-M3"
控制台:
$ sbt assembly
...
[error] 353 errors were encountered during merge
java.lang.RuntimeException: deduplicate: different file contents found in the following:
/Users/bob/.ivy2/cache/io.netty/netty-all/jars/netty-all-4.0.29.Final.jar:META-INF/io.netty.versions.properties
...
【问题讨论】:
-
@jbrown 感谢您的指点,看起来使用来自this example 的
assemblyMergeStrategy可以纠正这个问题,但不能解决我的整体问题 -
好吧,问题是由于依赖关系树中的 2 个 jar 包含相同的文件,例如也许 2 个不同的依赖项使用同一个库的不同版本,并且冲突意味着 sbt 不知道如何自动解决问题。这就是您通过合并策略决定的地方。所以你可能仍然会看到一个警告(我忘了),但只要你的项目编译并工作,你应该没问题。我将在评论中添加我的合并策略。
-
不幸的是,这被标记为重复太急切了。问题的主要来源很可能是您在使用 Spark 1.6.0 时尝试使用适用于 Spark 1.5.0 的 Cassandra 连接器。 1.6.0 还没有连接器。您还提到了“最新的 Spark (2.10.5)”,但没有类似的 spark 版本。您可能指的是 Scala 2.10.5 的 Spark,这也可能与您使用 Scala 2.11.7 冲突。试试
scalaVersion := "2.10.5"和"spark-core" % "1.5.0",你可能不会再遇到合并问题了。
标签: scala apache-spark spark-cassandra-connector