Azure Databricks执行SparkSQL时Parquet CRC校验失败求助
解决Azure Databricks中Parquet CRC校验失败的问题
这个错误的核心原因是指定的Parquet文件损坏,CRC校验和验证不通过,导致Spark无法正常读取该文件,进而引发任务失败。以下是具体的解决步骤:
定位损坏文件
报错中明确指出了损坏文件的路径:abfss:REDACTED_LOCAL_PART@storageaccount.dfs.core.windows.net/database/database/table/part-00040-4d085581-b8f9-4ecd-a768-2d47ca48d3fb-c000.snappy.parquet
登录Azure存储账户,在对应容器中找到该文件,尝试手动下载并打开,确认文件是否确实损坏。临时跳过损坏文件执行任务
如果可以接受丢失该文件中的数据,可通过配置让Spark忽略损坏文件:SET spark.sql.files.ignoreCorruptFiles = true; SET spark.sql.files.ignoreMissingFiles = true;执行完上述配置后,重新运行你的CREATE TABLE语句即可继续完成任务。
修复损坏文件(若数据重要)
- 检查Azure存储账户是否开启了快照或版本控制功能,若有,恢复该文件的历史版本替换损坏文件。
- 如果该文件是由之前的ETL任务生成的,重新运行对应的生成任务,用新生成的完整文件替换损坏的文件。
预防后续问题
- 确保Databricks集群与Azure存储账户之间的网络连接稳定,避免文件写入过程中中断。
- 定期对重要表执行数据完整性校验,例如:
ANALYZE TABLE db.tbl1 COMPUTE STATISTICS; - 开启Azure存储的软删除和版本控制功能,为文件损坏后的恢复提供保障。
内容的提问来源于stack exchange,提问作者Yatharth Kaushik
相关产品推荐
相关产品推荐

