Azure Databricks读取GCS文件时元数据服务器令牌获取失败求助
问题分析与解决方案
为什么会触发元数据服务器访问?
GCS的Hadoop文件系统客户端默认会按优先级顺序尝试多种认证方式:
- 优先尝试从GCP元数据服务器获取默认服务账号令牌(这是GCP环境的原生认证逻辑)
- 失败后才会使用手动配置的服务账号密钥
你的环境是Azure Databricks,不存在GCP元数据服务器(169.254.169.254是GCP元数据服务的固定地址),因此客户端第一步认证就失败并抛出错误。
解决步骤
1. 添加强制认证类型配置
在现有Spark配置基础上,新增以下参数,强制客户端仅使用服务账号密钥认证,跳过元数据服务器检测:
spark.conf.set("spark.hadoop.google.cloud.auth.type", "SERVICE_ACCOUNT") spark.conf.set("spark.hadoop.google.cloud.auth.service.account.disable.implicit.retrieval", "true")
2. 检查服务账号私钥格式
确保传入的private_key是完整的PEM格式,并且在Databricks中正确转义换行符:
- 原始私钥格式示例:
-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC... ... -----END PRIVATE KEY----- - 在Databricks中需将换行符替换为
\n,示例:private_key = "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\n...\n-----END PRIVATE KEY-----"
3. 验证配置生效
运行读取代码前,可先确认配置是否正确加载:
print(spark.conf.get("spark.hadoop.google.cloud.auth.type")) print(spark.conf.get("spark.hadoop.google.cloud.auth.service.account.enable"))
完整配置示例
# 基础GCS认证配置 spark.conf.set("spark.hadoop.google.cloud.auth.service.account.enable", "true") spark.conf.set("spark.hadoop.fs.gs.auth.service.account.email", client_email) spark.conf.set("spark.hadoop.fs.gs.project.id", project_id) spark.conf.set("spark.hadoop.fs.gs.auth.service.account.private.key", private_key) spark.conf.set("spark.hadoop.fs.gs.auth.service.account.private.key.id", private_key_id) spark.conf.set("spark.hadoop.fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem") spark.conf.set("spark.hadoop.fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS") # 新增强制认证方式配置 spark.conf.set("spark.hadoop.google.cloud.auth.type", "SERVICE_ACCOUNT") spark.conf.set("spark.hadoop.google.cloud.auth.service.account.disable.implicit.retrieval", "true") # 读取GCS文件 gcs_path = "gs://ddfsdfts/events/31dfsdfs4_2025_02_01_000000000000.csv" df = spark.read.format("csv") \ .option("header", "true") \ .option("inferSchema", "true") \ .load(gcs_path) df.show()
内容的提问来源于stack exchange,提问作者KristiLogos
相关产品推荐
相关产品推荐

