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

如何配置Trino使用的parquet-mr版本以读取Flink写入的数组字段

Trino查询含数组字段的Parquet表报PrimitiveColumnIO转GroupColumnIO错误

问题场景

运行以下Trino查询时触发类型转换错误:

select *
from table
where date_key = '2023-03-05'
limit 10

错误信息

Trino Error
trino error: class org.apache.parquet.io.PrimitiveColumnIO cannot be cast to class 
org.apache.parquet.io.GroupColumnIO (org.apache.parquet.io.PrimitiveColumnIO and 
org.apache.parquet.io.GroupColumnIO are in unnamed module of loader 
io.trino.server.PluginClassLoader @259fe541)

排查结果

  • 仅查询包含数组字段的表时触发错误,查询其他数据类型字段的表正常。
  • 根因推测为Parquet-mr版本不匹配:当前Trino集群版本为378,而目标Parquet文件由使用parquet-mr 1.12.3的Flink应用写入,该版本与Trino 378内置的parquet-mr版本存在API兼容性差异。

解决方法

1. 升级Trino版本

Trino 378内置的parquet-mr版本(通常为1.11.1)与1.12.3存在API变更,导致数组字段解析时出现类型转换错误。升级到Trino 400及以上版本,这类版本已适配更高版本的parquet-mr,可兼容Flink 1.12.3写入的Parquet文件。

2. 降级Flink写入的parquet-mr版本

若暂时无法升级Trino,可修改Flink应用的依赖,将parquet-mr版本降级至与Trino 378兼容的1.11.1版本:

  • Maven依赖配置:
<dependency>
    <groupId>org.apache.parquet</groupId>
    <artifactId>parquet-hadoop</artifactId>
    <version>1.11.1</version>
</dependency>
  • Gradle依赖配置:
implementation 'org.apache.parquet:parquet-hadoop:1.11.1'

重新打包并运行Flink应用写入数据后,Trino即可正常查询数组字段。

3. 调整Hive连接器兼容配置(辅助方案)

Trino的Hive连接器无直接指定parquet-mr版本的配置项,但可尝试添加以下配置提升兼容性:
在Hive连接器配置文件(如etc/catalog/hive.properties)中添加:

hive.parquet.use-column-names=true
hive.parquet.read-all-columns=true

该配置能优化Parquet元数据解析逻辑,但仅能缓解部分版本兼容问题,建议优先采用前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:13:11