scala - 运行 Scala Spark 代码以列出存储中的 blob 时出错
问题描述
google-cloud-storage
尝试使用库列出 blob 时出现以下错误:
线程“主”java.lang.NoSuchMethodError 中的异常:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
我试图更改google-cloud-storage
库的版本,build.sbt
但一次又一次地得到相同的错误。
import com.google.auth.oauth2.GoogleCredentials
import com.google.cloud.storage._
import com.google.cloud.storage.Storage.BlobListOption
val credentials: GoogleCredentials = GoogleCredentials.getApplicationDefault()
val storage: Storage = StorageOptions.newBuilder().setCredentials(credentials).setProjectId(projectId).build().getService()
val blobs =storage.list(bucketName, BlobListOption.currentDirectory(), BlobListOption.prefix(path))
我的build.sbt
样子是这样的:
version := "0.1"
scalaVersion := "2.11.8"
logBuffered in Test := false
libraryDependencies ++=
Seq(
"org.apache.spark" %% "spark-core" % "2.2.0" % "provided",
"org.apache.spark" %% "spark-sql" % "2.2.0" % "provided",
"org.scalatest" %% "scalatest" % "3.0.0" % Test,
"com.typesafe" % "config" % "1.3.1",
"org.scalaj" %% "scalaj-http" % "2.4.0",
"com.google.cloud" % "google-cloud-storage" % "1.78.0"
)
请帮我。
解决方案
这是因为 Spark 使用旧版本的 Guava 库而google-cloud-storage
不是没有Preconditions.checkArgument
方法的库。这导致java.lang.NoSuchMethodError
异常。
您可以在此处找到有关如何解决此问题的更详细的答案和说明。
推荐阅读
- ruby-on-rails - 保存到模型时绕过 Carrierwave 上传器
- python - 在 __init__ 中为用户类设置默认/空属性
- arrays - 在bash中使用数组通过mailx附加文件
- deep-learning - 如何在 PyTorch 中物理移除神经元?
- ios - 如何实现小视图变成全屏视图的效果?类似于 Snapchat 从集合视图到内容视图的转换
- java - 如何配置 Eclipse.ini 文件以镜像 Shell 脚本以启用 TLS
- amazon-web-services - 如何在不更改分发的 404 页面的情况下将 (SPA) 子站点作为行为添加到现有 Cloudfront 分发中?
- matlab - 如何从 n 个大小的块中制作块稀疏矩阵?
- javascript - 如果消息不为空,useEffect 显示小吃栏,以及如何使用 useState 呢?
- python-3.x - 美丽的汤爬行者在工作中间停下来