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

Spark 2.4.8查询Parquet表触发AssertionError报错求助

解决Spark 2.4.8查询Parquet表时的AssertionError报错

问题重现

执行Spark SQL统计Parquet表时触发断言失败错误:

spark.sql("select count(1) from edw.result_base").show()

报错信息:

py4j.protocol.Py4JJavaError: An error occurred while calling o69.sql. java.lang.AssertionError: assertion failed

已尝试设置spark.sql.hive.convertMetastoreOrc=true,但问题未解决,完整堆栈指向org.apache.spark.sql.hive.HiveMetastoreCatalog.convertToLogicalRelation方法的断言失败。

原因分析

从堆栈信息看,错误发生在Spark将Hive元仓库中的Parquet表转换为逻辑关系时,断言验证未通过。常见诱因包括:

  • 错误配置了Orc格式的转换开关(目标表是Parquet,而非Orc)
  • Hive元仓库中的表元数据损坏或格式不匹配
  • Spark与Hive元仓库版本兼容性问题

解决方案

  • 修正Parquet格式转换配置:
    禁用Hive元仓库到Spark Parquet的转换开关,替换之前的Orc配置:

    spark.conf.set("spark.sql.hive.convertMetastoreParquet", "false")
    

    这个配置会让Spark使用Hive的Parquet处理逻辑,绕过断言验证环节。

  • 修复表元数据:
    执行元数据修复命令,刷新表的分区和存储信息:

    MSCK REPAIR TABLE edw.result_base;
    

    如果修复无效,可尝试删除表后重新创建(注意备份数据)。

  • 验证表存储格式:
    查询表的详细元数据,确认存储格式正确:

    DESCRIBE EXTENDED edw.result_base;
    

    检查Storage字段中的InputFormat是否为Parquet相关类(如org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat),若格式不符需重新建表指定正确的存储格式。

  • 检查版本兼容性:
    确认Spark 2.4.8与Hive元仓库的版本匹配(Spark 2.4.x通常兼容Hive 1.2.x到2.3.x),若版本差异过大,需调整依赖或同步版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:32:44