Synapse Notebook能否使用通配符?读取Parquet文件报错求助
Synapse Notebook读取Parquet通配符报错的解决方法
1. 补全storage_options认证信息
storage_options不能为空字符串,必须提供ADLS Gen2的访问凭证,否则会因权限不足触发文件找不到的错误。根据你的认证方式选择配置:
- SAS令牌认证:
storage_options = {'sas_token': '你的SAS令牌内容'} - 服务主体认证:
storage_options = { 'client_id': '客户端ID', 'client_secret': '客户端密钥', 'tenant_id': '租户ID' }
2. 修正通配符路径
你的目标路径是test/year={yyyy}/month={MM}/day={dd}/*.parquet,对应的精准通配符写法应该匹配分区目录的命名规则:
df = pd.read_parquet( 'abfss://xxx@xxx.dfs.core.windows.net/test/year=*/month=*/day=*/*.parquet', storage_options=storage_options )
如果需要递归匹配所有子目录下的Parquet文件,可使用**并开启递归:
df = pd.read_parquet( 'abfss://xxx@xxx.dfs.core.windows.net/test/**/*.parquet', storage_options=storage_options, recursive=True )
3. 安装必要依赖包
Pandas读取abfss协议的路径需要依赖fsspec和adlfs库,在Notebook中先执行安装命令:
!pip install fsspec adlfs
4. 改用PySpark读取(推荐方案)
Synapse原生支持PySpark,对Hive风格的分区目录(year={yyyy})支持更完善,能自动识别分区列,且读取大文件性能更优:
df = spark.read.parquet('abfss://xxx@xxx.dfs.core.windows.net/test/') # 自动将year、month、day作为DataFrame字段 df.show()
内容的提问来源于stack exchange,提问作者user19504539
相关产品推荐
相关产品推荐

