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

Databricks读取.snappy.parquet文件出现报错,请求技术支持

问题分析与解决方法

错误原因拆解

  1. Delta格式读取单个Parquet文件的错误
    用format='delta'读取单个.snappy.parquet文件完全不对——Delta Lake是依赖完整目录结构(含_delta_log元数据)的湖仓格式,不是用来读单个Parquet文件的。Spark把你的文件名当成了Delta表的分区路径,所以抛出分区格式错误。

  2. Parquet读取报错的可能原因
    出现Incompatible format detected通常有这几种情况:

    • 文件不是标准Parquet:可能是Delta表的分片文件,单独读缺少元数据支持;或者文件损坏、后缀名标错了。
    • Spark版本不兼容:写这个文件的Spark版本和你现在用的版本差太多,导致格式不兼容。
    • 路径有问题:如果用的是相对路径,Spark工作目录和文件实际位置可能不匹配。

可行解决方案

  • 方案1:用正确方式读取对应类型的文件
    如果这个文件是Delta表的一部分,别单独读单个分片,直接读整个Delta表的目录:

    # 替换成Delta表的根目录路径,不是单个文件
    table = spark.read.load("/path/to/delta-table-folder", format='delta')
    

    如果确实是独立的Parquet文件,先验证文件是否完好:

    • 用parquet-tools工具本地检查:
      parquet-tools head part-001-36b4-7ea3-4165-8742-2f32d8643d-c000.snappy.parquet
      
      要是工具能正常解析内容,再用Spark读取时确保路径正确(优先用绝对路径):
      table = spark.read.parquet("/full/path/to/your/part-001-36b4-7ea3-4165-8742-2f32d8643d-c000.snappy.parquet")
      
  • 方案2:解决版本兼容问题
    如果是Spark版本不兼容,试试指定Parquet兼容参数:

    table = spark.read.option("parquet.enable.summary-metadata", "false").parquet(data)
    

    或者调整Spark版本,和写文件的版本保持一致。

  • 方案3:修复或重新获取文件
    要是parquet-tools检测到文件损坏,重新拿完整的文件,或者从数据源重新生成这个Parquet文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:40:48