You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PySpark Pandas API读取ADLS Gen2 CSV报'az'协议错误

解决Azure Synapse中PySpark Pandas读取ADLS Gen2数据的路径错误问题

问题原因

  • Pandas的read_csv在Synapse环境中依赖Azure SDK解析az://协议,因此可直接读取;但PySpark Pandas(ps)底层基于Spark,遵循Hadoop文件系统规范,不支持az://协议。
  • 换成abfs://后报错是因为路径格式不完整:Spark要求ADLS Gen2的路径必须包含存储账户名作为权限部分,正确格式需明确存储账户信息。

解决方案

1. 使用完整的ABFS路径格式

修改代码为包含存储账户名的标准ABFS(推荐加密的abfss协议)路径:

# 替换为你的实际存储账户名、容器名和文件路径
storage_account = "your-storage-account-name"
container = "container"
file_path = "path/to/file.csv"

df_spark = ps.read_csv(f"abfss://{container}@{storage_account}.dfs.core.windows.net/{file_path}", sep=';', dtype=str)

2. 确认Synapse的访问权限配置

若仍报错,需确保Synapse工作区已获得ADLS Gen2的访问权限:

  • 托管身份方式:为Synapse工作区的托管身份分配ADLS Gen2容器的Storage Blob Data Contributor角色。
  • SAS密钥方式:在笔记本中提前配置Spark参数(适用于临时测试场景):
    spark.conf.set(f"fs.azure.account.auth.type.{storage_account}.dfs.core.windows.net", "SAS")
    spark.conf.set(f"fs.azure.sas.token.provider.type.{storage_account}.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
    spark.conf.set(f"fs.azure.sas.fixed.token.{storage_account}.dfs.core.windows.net", "your-sas-token-string")
    

3. 先验证路径可用性

可以通过Spark原生工具先确认路径可访问,再用PySpark Pandas读取:

# 检查文件是否存在
dbutils.fs.ls(f"abfss://{container}@{storage_account}.dfs.core.windows.net/{file_path}")

内容的提问来源于stack exchange,提问作者RogerKint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:15:52