Google cloud storage 在以下位置从元数据服务器获取访问令牌时出错:http://metadata/computeMetadata/v1/instance/service-accounts/default/token

Google cloud storage 在以下位置从元数据服务器获取访问令牌时出错:http://metadata/computeMetadata/v1/instance/service-accounts/default/token,google-cloud-storage,google-cloud-intellij,Google Cloud Storage,Google Cloud Intellij,我试过使用p12密钥文件,它成功地工作了,我能够从gcs bucket中获取数据。但是使用json密钥文件sparksession无法获取json配置值。相反,它使用默认元数据。我正在使用maven和IntelliJ进行开发。下面是代码片段 def main(args: Array[String]): Unit = { System.out.println("hello gcp connect") System.setProperty("hadoop.home.di

我试过使用p12密钥文件,它成功地工作了,我能够从gcs bucket中获取数据。但是使用json密钥文件sparksession无法获取json配置值。相反,它使用默认元数据。我正在使用maven和IntelliJ进行开发。下面是代码片段

def main(args: Array[String]): Unit = {
System.out.println("hello gcp connect")
System.setProperty("hadoop.home.dir", "C:/hadoop/")
val sparkSession =
  SparkSession.builder()
    .appName("my first project")
    .master("local[*]")
    .config("spark.hadoop.fs.gs.project.id", "shaped-radius-297301")
    .config("spark.hadoop.fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem")
    .config("spark.hadoop.fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS")
    .config("spark.hadoop.google.cloud.project.id", "shaped-radius-297301")
    .config("spark.hadoop.google.cloud.auth.service.account.enable", "true")
    .config("spark.hadoop.google.cloud.auth.service.account.email", "service-account@shaped-radius-297301.iam.gserviceaccount.com")
    .config("spark.hadoop.google.cloud.service.account.json.keyfile", "C:/Users/shaped-radius-297301-5bf673d7f0d2.json")
    .getOrCreate()
    sparkSession.sparkContext.addFile("gs://test_bucket/sample1.csv")
    sparkSession.read.csv(SparkFiles.get("sample1.csv")).show()

您需要处理您的配置。从您提供的图像来看,您的服务帐户电子邮件和服务帐户密钥似乎不正确。请确保您正在IAM上使用具有云存储管理员角色的电子邮件,例如:

serviceaccount@project-id.iam.gserviceaccount.com
您的路径应该是一个可以被配置看到的目录,“json路径”应该是您的密钥当前所在的目录

另外,请确保您使用的是项目中存在的bucket,否则会出现“bucket不存在”或“访问被拒绝”等错误

更新


OP更新了问题,请参考此。可能是
GOOGLE\u应用程序\u凭据
指向了错误的位置,或者可能没有正确的IAM权限。

您需要处理配置。从您提供的图像来看,您的服务帐户电子邮件和服务帐户密钥似乎不正确。请确保您正在IAM上使用具有云存储管理员角色的电子邮件,例如:

serviceaccount@project-id.iam.gserviceaccount.com
您的路径应该是一个可以被配置看到的目录,“json路径”应该是您的密钥当前所在的目录

另外,请确保您使用的是项目中存在的bucket,否则会出现“bucket不存在”或“访问被拒绝”等错误

更新


OP更新了问题,请参考此。可能是
GOOGLE\u APPLICATION\u凭据
指向了错误的位置,或者可能没有正确的IAM权限。

Hi,请编辑您的问题,并将代码片段的文本版本而不是图像放入其中。最好的做法是以文本形式发布代码片段,这样社区应该能够轻松阅读您的配置。您好,请编辑您的问题,并将代码片段的文本版本而不是图像。最好的做法是以文本形式发布代码片段,这样社区应该能够轻松阅读您的配置。谢谢,Donald,但我正在使用IntelliJ从本地windows计算机上运行。我设置的系统属性类似于system.setProperty(“GOOGLE_应用程序_凭证”,“C:/Users/shaped-radius-297301-5bf673d7f0d2.json”)但它似乎不起作用。尝试我已尝试以不同的方式设置环境变量,但仍然是一样的。我了解您的来源,但如果您仍然遇到错误,没有可操作的说明,并且需要故障排除帮助,我建议联系,以便我们能够正确地查看您的项目。谢谢,Donald,但我正在使用IntelliJ从本地windows计算机上运行。我设置的系统属性类似于system.setProperty(“GOOGLE_应用程序_凭证”,“C:/Users/shaped-radius-297301-5bf673d7f0d2.json”)但它似乎不起作用。尝试我尝试过以不同的方式设置环境变量,但仍然是一样的。我了解您的来源,但如果您仍然遇到错误,没有可操作的描述,并且需要故障排除帮助,我建议联系,以便我们可以正确地查看您的项目。