Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 谷歌云存储番石榴依赖冲突似乎无法解决,这有什么问题?_Scala_Apache Spark_Google Cloud Platform_Google Cloud Storage_Google Cloud Dataproc - Fatal编程技术网

Scala 谷歌云存储番石榴依赖冲突似乎无法解决,这有什么问题?

Scala 谷歌云存储番石榴依赖冲突似乎无法解决,这有什么问题?,scala,apache-spark,google-cloud-platform,google-cloud-storage,google-cloud-dataproc,Scala,Apache Spark,Google Cloud Platform,Google Cloud Storage,Google Cloud Dataproc,我已经尝试解决这个问题太多次了,但仍然不能完全理解它,似乎问题更深了,这是图书馆中的一个巨大问题 val cloudStorage = "com.google.cloud" % "google-cloud-storage" % googleCloudV exclude ("com.google.guava", "guava") val cloudHadoop = "com.google.cloud.bigdataoss" % "gcs-connector"

我已经尝试解决这个问题太多次了,但仍然不能完全理解它,似乎问题更深了,这是图书馆中的一个巨大问题

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
)
然而,在番石榴依赖性问题上仍然没有结果

我正在运行的GCP依赖项的版本(连同Spark 2.3.0)如下所示

val googleCloudV    = "1.98.0"
val googleHadoopV   = "hadoop3-2.0.0"
val guavaV          = "28.0-jre"
可能的最新版本


希望有人能对此有所了解,因为这是一个非常奇怪的问题,没有人能真正解决它?

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


解决方案是在您的工作罐中对番石榴(以及任何其他依赖项)进行着色。

我不擅长Hadoop。您能告诉我您是否使用Gradle或Maven之类的依赖关系管理器吗?我使用sbt进行依赖关系管理@GuillaumeBlaquierear您是否尝试从Dataproc集群中的Spark工作访问GCS?如果是这种情况,您不需要GCS库,请使用Dataproc内置的GCS连接器。@Dagang,但我确实需要GCS库来访问云存储。这可能会有帮助,非常感谢您的回复!然而,这不是我在问题中发布的内容吗?或者你是说Hadoop?只是检查一下:1)你在运行
sbt assembly
(而不是
sbt package
),2)你在提交uber jar(类似于
*-assembly-*.jar
)吗?很抱歉@KarthikPalaniappan回复太晚了。是的,我正在运行
sbt assembly
,并且我还将uber-jar提交给了该作业。@tix是否还有进一步的线索?同样值得一提的是,它在本地工作,但一旦部署,就会提示依赖相关异常。