指定Schema读取Parquet时遭遇UnsupportedOperationException问题排查
问题原因分析
指定Schema与Parquet底层存储不兼容:你通过指定Schema将
group_size__c强制设为string类型,但目标Parquet文件中该字段实际是double类型,且采用了字典编码存储。Spark读取时,虽会按照你指定的Schema构建DataFrame元数据,但底层读取数据时仍会依赖Parquet文件自带的字典编码信息(Double类型的字典)。当执行cast或distinct这类需要解析实际数据的操作时,Double类型的字典与你指定的string类型元数据不匹配,直接触发UnsupportedOperationException。禁用字典编码配置未生效:
parquet.enable.dictionary是Parquet写入阶段的配置,仅控制写入时是否生成字典编码。对于已生成的Parquet文件,读取阶段该配置无法修改文件已有的编码逻辑,所以禁用它无法解决读取时的类型冲突问题。
内容的提问来源于stack exchange,提问作者ak1234
相关产品推荐
相关产品推荐

