【发布时间】:2020-04-03 16:41:56
【问题描述】:
我的项目在 Intellij sbt 控制台中运行没有问题。
但是当我使用 spark-submit 运行 jar 时使用 sbt 程序集编译后,我得到了这个:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V
按照 GCP 的建议 here,我围绕依赖项尝试了很多不同的方法
我将 sbt 与程序集插件一起使用。
这是我的 sbt 文件:
name := "firestore-dump"
version := "0.1"
scalaVersion := "2.11.8"
libraryDependencies += "com.google.firebase" % "firebase-admin" % "6.11.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.4"
libraryDependencies += "org.yaml" % "snakeyaml" % "1.18"
libraryDependencies += "net.liftweb" %% "lift-json" % "3.3.0"
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.google.common.**" -> "repackaged.com.google.common.@1").inAll,
ShadeRule.rename("com.google.protobuf.**" -> "repackaged.com.google.protobuf.@1").inAll
)
assemblyMergeStrategy in assembly := {
entry: String => {
val strategy = (assemblyMergeStrategy in assembly).value(entry)
if (strategy == MergeStrategy.deduplicate) MergeStrategy.first
else strategy
}
}
任何帮助将不胜感激
【问题讨论】:
标签: java scala apache-spark google-cloud-platform sbt