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

Spark任务执行失败:Parquet字典类型不兼容问题咨询

解决方法

1. 校验实际数据与Schema的一致性

尽管你提到新生成的Parquet文件Schema与原有一致,但可能存在隐性类型不匹配:

  • 在Databricks中执行DESCRIBE EXTENDED <table_name>,查看涉及字段的实际存储元数据,确认报错关联的Int字段类型定义无异常
  • 抽样检查新Parquet文件的对应字段,排查是否存在字符串、二进制值被错误写入Int列的情况(例如空字符串、非数字字符)

2. 禁用Parquet字典编码

该错误多因Parquet字典编码在ODBC读取场景下的类型兼容问题导致,可在写入Parquet时禁用字典编码:

// Scala 写入示例
df.write
  .option("parquet.enable.dictionary", "false")
  .parquet("/path/to/target/location")

或通过SQL建表时指定配置:

CREATE TABLE target_table
USING PARQUET
OPTIONS (parquet.enable.dictionary 'false')
AS SELECT * FROM source_table

3. 强制类型转换并重写数据

若确认数据本身为合法Int值,但字典编码引发解码失败,可强制转换字段类型后重新写入:

CREATE OR REPLACE TABLE corrected_table
AS SELECT 
  CAST(problem_column AS INT) AS problem_column,
  other_column_1,
  other_column_2
FROM original_table

4. 调整ODBC连接的Parquet读取配置

在ODBC连接字符串中添加以下参数,强制Spark使用兼容的Parquet读取逻辑:

ParquetReaderCompatibilityMode=LEGACY

该参数会切换至旧版Parquet读取模式,规避字典编码的类型解析冲突。

5. 升级Databricks Runtime版本

部分旧版Databricks Runtime存在Parquet字典编码的类型解析Bug,建议升级至最新LTS版本(如11.3 LTS及以上),新版本通常已修复此类兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:54:23