似乎无法解决的google-cloud-storage Guava依赖冲突有什么问题?

问题描述 投票:1回答:1

[尝试解决这个问题的次数太多了,但仍然无法解决这个问题,似乎问题更深了,这是库中的一个大问题。

val cloudStorage = "com.google.cloud"            % "google-cloud-storage" % googleCloudV exclude ("com.google.guava", "guava")
val cloudHadoop  = "com.google.cloud.bigdataoss" % "gcs-connector"        % googleHadoopV exclude ("org.apache.hadoop", "hadoop-common") exclude ("org.apache.hadoop", "hadoop-mapreduce-client-core") exclude ("com.google.guava", "guava")
val guava        = "com.google.guava"            % "guava"                % guavaV

阅读成千上万的帖子,我仍然无法使其运行在Dataproc集群中部署它,由于以下错误而崩溃。

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
    at com.google.cloud.storage.StorageImpl.optionMap(StorageImpl.java:1480)
    at com.google.cloud.storage.StorageImpl.optionMap(StorageImpl.java:1469)
    at com.google.cloud.storage.StorageImpl.optionMap(StorageImpl.java:1502)
    at com.google.cloud.storage.StorageImpl.list(StorageImpl.java:326)

我也尝试过阴影...

assemblyShadeRules in assembly := Seq(
  ShadeRule.rename("com.google.common.**" -> "repackaged.com.google.common.@1").inAll
)

而且,关于Guava依赖项问题,仍然没有结果。

我正在运行的GCP依赖项的版本(与Spark 2.3.0一起,是以下版本。

val googleCloudV    = "1.98.0"
val googleHadoopV   = "hadoop3-2.0.0"
val guavaV          = "28.0-jre"

最新的版本。

希望有人可以对此有所了解,因为没人能真正解决这个问题真的很奇怪?

scala apache-spark google-cloud-platform google-cloud-storage google-cloud-dataproc
1个回答
1
投票

这是Hadoop中的一个众所周知的问题,像guava这样的依赖项没有阴影。因此,当您依赖Guava(比Hadoop高得多的版本)时,您可以从Hadoop的jar中获取该版本,而该jar更旧,并且没有该方法。

解决方案是在作业罐中遮盖番石榴(及其他依赖项)。

© www.soinside.com 2019 - 2024. All rights reserved.