在Glue表上创建Presto视图报错:无效数据类型integer
问题原因与解决办法
这个错误源于AWS Glue数据目录和Athena(基于Presto)的类型体系兼容性问题:
Glue中定义的int类型,在元数据里会被存储为integer标识,但Athena的Presto引擎在解析视图关联的表元数据时,无法正确适配这种类型映射,因此抛出HIVE_INVALID_METADATA错误。
解决方法
有两种可行的修复方式:
创建视图时显式转换类型
在视图的SQL中,对age列进行强制类型转换,让Presto能正确识别:create or replace view view_a as select emp_id, cast(age as integer) as age from table_a统一Glue表的类型标识
直接修改Glue数据目录中table_a的age列类型,将原来的int改为integer(两者本质是同一种32位整数类型,仅元数据标识不同),之后再重新创建视图即可正常查询。
内容的提问来源于stack exchange,提问作者vvazza
相关产品推荐
相关产品推荐

