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

如何在Azure Synapse Studio中通过PySpark获取Azure存储账户的文件全路径

Azure Synapse PySpark环境访问存储账户PDF及获取路径方法

路径格式说明

本地环境使用磁盘盘符开头的本地路径,Azure存储账户的文件统一使用abfss协议路径,格式如下:

abfss://<容器名称>@<存储账户名称>.dfs.core.windows.net/<文件夹层级>/<文件名.pdf>

举个实际示例:容器名为pdf-files,存储账户名为companydatastorage,PDF存放在2024/业务报表目录下的季度报告.pdf,完整路径为:
abfss://pdf-files@companydatastorage.dfs.core.windows.net/2024/业务报表/季度报告.pdf

存储账户授权配置

访问存储账户前需要完成权限配置,常用两种方式:

  • 托管身份授权(推荐):提前给Synapse工作区的托管身份分配对应存储容器的「存储Blob数据参与者」权限,无需在代码中配置密钥,直接使用abfss路径即可访问。
  • SAS令牌授权:生成存储账户/对应容器的SAS令牌,在代码中添加如下配置即可访问:
storage_account = "替换为你的存储账户名"
sas_token = "替换为你的SAS令牌"
spark.conf.set(f"fs.azure.account.key.{storage_account}.dfs.core.windows.net", sas_token)

获取PDF文件路径

单个文件路径

直接按照上述abfss格式拼接得到完整路径即可,可直接传入PySpark读取方法使用:

# 读取单个PDF的二进制内容
single_pdf_path = "abfss://pdf-files@companydatastorage.dfs.core.windows.net/2024/业务报表/季度报告.pdf"
pdf_data = spark.read.format("binaryFile").load(single_pdf_path)

批量获取目录下所有PDF路径

使用Synapse自带的dbutils工具遍历目录,直接获取所有PDF的完整abfss路径:

pdf_folder = "abfss://pdf-files@companydatastorage.dfs.core.windows.net/2024/业务报表/"
# 遍历目录筛选所有PDF文件
all_pdf_paths = [file.path for file in dbutils.fs.ls(pdf_folder) if file.name.endswith(".pdf")]

# 打印所有PDF路径验证
for path in all_pdf_paths:
    print(path)

注意:如果你需要使用PyPDF2、pdfplumber等第三方Python库处理PDF,需要先将存储中的PDF拉取到Synapse节点的本地临时目录,再使用本地路径处理,示例如下:

# 从存储复制PDF到本地临时目录
remote_pdf_path = "abfss://pdf-files@companydatastorage.dfs.core.windows.net/2024/业务报表/季度报告.pdf"
local_temp_path = "/tmp/temp_report.pdf"
dbutils.fs.cp(remote_pdf_path, f"file:{local_temp_path}")

# 调用第三方库处理
import PyPDF2
reader = PyPDF2.PdfReader(local_temp_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:03