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

Azure Synapse无服务器池加载Parquet文件报Unexpected end of stream错误

问题诱因
  • Parquet文件本身损坏/不完整:Parquet格式依赖文件尾部的元数据(包含Schema、块偏移量等信息)实现快速读取,若文件生成过程被中断、上传时断连未完成提交、或生成的是空文件,尾部元数据缺失就会触发该报错。
  • 存储层访问限制:目标文件处于Blob归档存储层未解冻、数据源配置的访问凭据无完整文件读取权限、存储账户防火墙拦截了Synapse无服务器池的出站请求,都会导致读取流提前中断。
  • Parquet格式兼容性问题:文件使用了Synapse不支持的压缩算法、非标准的Parquet格式扩展,也会导致解析流意外终止。
解决方案
  1. 优先验证文件完整性
    先将目标文件下载到本地,使用Python工具验证可读性:

    import pandas as pd
    # 读失败则说明文件本身损坏
    pd.read_parquet("下载的本地parquet文件路径")
    

    若文件大小为0,直接删除空文件或在查询路径中排除空文件即可。若本地读取失败,直接重新生成、重新上传Parquet文件即可解决。

  2. 检查存储层配置

    • 确认目标文件的存储层为热层/冷层,若为归档层需先完成解冻操作
    • 验证my_blob_datasource配置的凭据(SAS令牌、托管身份)具备该Blob的读取、列出权限
    • 检查存储账户的防火墙规则,已放行Synapse无服务器池的出站IP段
  3. 校验Parquet格式兼容性
    生成Parquet文件时优先使用snappy、gzip、zstd这类Synapse原生支持的压缩算法,避免开启生成工具的自定义Parquet扩展配置,使用标准Parquet 2.0格式生成文件。

  4. 查询优化
    若读取大文件触发问题,可将单个大Parquet拆分为100MB~1GB大小的多个小文件提升读取稳定性;也可以在OPENROWSET中显式指定Schema,避免全量解析元数据:

    SELECT * FROM OPENROWSET(
            BULK N'/path/to/my.parquet',
            DATA_SOURCE='my_blob_datasource',
            FORMAT='PARQUET'
    ) WITH (
        列名1 类型1,
        列名2 类型2
    ) as file_alias
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:39:02