AWS Glue创建含STRUCT类型表后,Athena查询报数据类型无效错误
解决AWS Glue创建带嵌套字段表时的HIVE_INVALID_METADATA错误
问题原因
AWS Glue数据目录底层兼容Hive元数据规范,Hive中定义嵌套对象使用的是ROW类型而非STRUCT类型。你在Glue中直接指定STRUCT类型会触发元数据校验不通过,导致查询报错。
解决方案
在Glue中定义嵌套字段时,将类型从STRUCT替换为ROW,和Hive建表语句保持一致:
原Glue中的类型定义:
STRUCT < field1: STRING, field2: STRING >
修改为:
ROW < field1: STRING, field2: STRING >
操作步骤
- 登录AWS Glue控制台,找到目标表
testtable - 进入表编辑页面,修改
testrecord列的数据类型为上述ROW格式 - 保存表结构后,重新执行查询即可正常访问
补充说明
通过Athena执行CREATE TABLE语句能正常工作,是因为Athena会自动按照Hive兼容的元数据格式同步到Glue数据目录,自动使用ROW类型存储嵌套字段的元数据,避开了手动在Glue中指定类型的格式问题。
内容的提问来源于stack exchange,提问作者oceansize
相关产品推荐
相关产品推荐

