Athena创建外部表触发ParseException错误,请求技术协助
问题排查与解决方案
错误原因
你遇到的ParseException是因为嵌套struct字段的语法格式错误。在Athena的HiveQL语法中,定义struct类型的字段时,必须严格遵循字段名: 类型的格式,而你的SQL里多个嵌套struct字段(比如eta、destination、origin、position)都省略了字段名后的冒号,导致解析器无法识别类型声明。
修正后的SQL
CREATE EXTERNAL TABLE transport_evaluator_prod( messageId STRING, type STRING, causationId STRING, correlationId STRING, traceparent STRING, `data` struct < evaluationOccurred: STRING, eta: struct < distance: INT, timeToDestination: INT, eta: STRING, destination: struct < latitude: DOUBLE, longitude: DOUBLE, altitude: DOUBLE >, destinationEventId: STRING, origin: struct < latitude: DOUBLE, longitude: DOUBLE, altitude: DOUBLE >, originEventId: STRING, plannedArrival: STRING, locationActionReference: STRING, resourceUrn: STRING, eventProvider: STRING, occured: STRING, position: struct < latitude: DOUBLE, longitude: DOUBLE, altitude: DOUBLE >, equipmentNumber: STRING, received: STRING > > ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1', 'ignore.malformed.json' = 'true' ) LOCATION 'changed-for-security' TBLPROPERTIES ('has_encrypted_data' = 'false')
关键修正点
- 在
eta、destination、origin、position这些嵌套struct字段名后添加冒号(:),明确字段类型为struct - 调整缩进让SQL结构更清晰(可选,便于后续维护)
内容的提问来源于stack exchange,提问作者abdul mohd
相关产品推荐
相关产品推荐

