Spark 和 Google Cloud Firestore with SBT 的依赖性问题



我的项目在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 建议

我将 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
}
}

任何帮助将不胜感激

Guava的Preconditions.checkArgument(boolean, String, Object)自番石榴20.0以来一直被引入。我想你的依赖项有旧版本。

https://guava.dev/releases/snapshot-jre/api/docs/com/google/common/base/Preconditions.html#checkArgument-boolean-java.lang.String-java.lang.Object-

你会尝试在 20.0>声明番石榴依赖项吗?如

libraryDependencies += "com.google.guava" %% "guava" % "26.0-android"

最新更新