Google cloud storage 在以下位置从元数据服务器获取访问令牌时出错:http://metadata/computeMetadata/v1/instance/service-accounts/default/token
我试过使用p12密钥文件,它成功地工作了,我能够从gcs bucket中获取数据。但是使用json密钥文件sparksession无法获取json配置值。相反,它使用默认元数据。我正在使用maven和IntelliJ进行开发。下面是代码片段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
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”)但它似乎不起作用。尝试我尝试过以不同的方式设置环境变量,但仍然是一样的。我了解您的来源,但如果您仍然遇到错误,没有可操作的描述,并且需要故障排除帮助,我建议联系,以便我们可以正确地查看您的项目。