如何在Synapse Notebook中通过abfss://读取Azure Data Lake Gen2的Excel文件
在Azure Synapse Notebook中读取ADLS Gen2的Excel文件(abfss路径)
以下提供两种从零开始的完整实现方案,分别适配PySpark和Pandas,支持Synapse环境的abfss路径访问。
方案一:使用PySpark读取Excel
步骤1:安装必要依赖
在Synapse Notebook的首个代码单元格运行以下命令,安装PySpark读取Excel所需的库:
%pip install pyspark-excel openpyxl
注:若需读取旧版
.xls格式文件,需额外安装xlrd==1.2.0(新版xlrd不再支持xlsx格式)。
步骤2:编写读取代码
利用com.crealytics.spark.excel格式读取abfss路径下的Excel文件,示例代码如下:
# 初始化Spark会话(Synapse中可省略,默认已配置) from pyspark.sql import SparkSession spark = SparkSession.builder.appName("ReadExcelADLS").getOrCreate() # 读取Excel文件 excel_df = spark.read \ .format("com.crealytics.spark.excel") \ .option("header", "true") # 是否将首行作为表头 .option("inferSchema", "true") # 是否自动推断列类型 .option("dataAddress", "'Sheet1'!A1") # 指定工作表和数据起始位置,可选 .load("abfss://<容器名>@<存储账户名>.dfs.core.windows.net/文件路径/xxx.xlsx") # 验证读取结果 excel_df.show(5)
可选:永久配置依赖
若不想每次启动Notebook都安装依赖,可在Synapse Spark池的包管理中添加:
- PyPI包:
pyspark-excel、openpyxl - 或Maven坐标:
com.crealytics:spark-excel_2.12:0.13.5(需与Spark池的Scala版本匹配)
方案二:使用Pandas读取Excel
步骤1:安装依赖
Pandas本身不支持abfss协议,需安装adlfs和fsspec库实现路径解析,运行以下命令:
%pip install pandas openpyxl fsspec adlfs
注:读取
.xls文件时替换openpyxl为xlrd==1.2.0。
步骤2:编写读取代码
直接使用Pandas的read_excel方法,传入abfss路径即可:
import pandas as pd # 读取Excel文件 excel_df = pd.read_excel( "abfss://<容器名>@<存储账户名>.dfs.core.windows.net/文件路径/xxx.xlsx", sheet_name="Sheet1", # 指定工作表名或索引 header=0 # 指定表头行 ) # 验证读取结果 print(excel_df.head())
关键注意事项
- 权限验证:确保Synapse工作区的托管标识(Managed Identity)拥有目标ADLS Gen2存储账户的
Storage Blob Data Contributor权限(若已能读取CSV/Parquet,此权限通常已配置)。 - 文件大小适配:PySpark适合处理大体积Excel文件,Pandas更适合小文件场景。
- SAS令牌替代:若托管标识权限不足,可在abfss路径后拼接SAS令牌,格式为
abfss://<容器名>@<存储账户名>.dfs.core.windows.net/路径/xxx.xlsx?<SAS令牌>
内容的提问来源于stack exchange,提问作者AzSurya Teja
相关产品推荐
相关产品推荐

