java - Spark 和 Google Cloud Firestore 与 SBT 的依赖性问题

标签 java scala apache-spark google-cloud-platform sbt

我的项目在 Intellij sbt 控制台中运行没有问题。

但是在使用 sbt 程序集编译后,当我使用 Spark-submit 运行 jar 时,我得到了:

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

如有任何帮助,我们将不胜感激

最佳答案

Guava 的 Preconditions.checkArgument(boolean, String, Object) 是从 Guava 20.0 开始引入的。我猜你的依赖项有旧版本。

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

你会尝试声明 Guava 依赖 > 20.0 吗?比如

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

关于java - Spark 和 Google Cloud Firestore 与 SBT 的依赖性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59268178/

相关文章:

java - 如何使用 java/Scala 从 xml 文件中删除所有标签?

scala - 使用 scala-dispatch 的 multipart/form-data

scala - 使用 Scala API 将 TSV 读入 Spark Dataframe

apache-spark - 如何合并 Spark SQL 查询的结果以避免出现大量小文件/避免空文件

java - 将ArrayList作为值映射到映射时出现不兼容的类型错误

Java多态/重载惊喜

scala - Scala 2.9将添加哪些新功能?

java - 如何使 jmeter 根据访问日志行中存在的时间戳进行日志重播

java - LIMIT 和 OFFSET 在 android 中不能正常工作

apache-spark - 为具有大量输入文件的 Spark SQL 作业加速 InMemoryFileIndex