【发布时间】:2020-08-01 11:48:50
【问题描述】:
我的 json 数据看起来像:
{ "col1" : 123, "metadata" : { "opt1" : 456, "opt2" : 789 } }
各种元数据字段(其中有很多)是可选的,可能存在也可能不存在。
我的查询是:
select col1, metadata.opt1 from "db-name".tablename
如果opt1 不存在于任何行中,我希望这将返回所有行,opt1 列为空白,但如果metadata 中没有opt1 行,则爬虫运行(并且在运行查询时可能仍然不存在于数据中,因为它是可选的),查询失败,并且:
SYNTAX_ERROR: line 2:1: Column '"metadata"."opt1"' cannot be resolved
我可以在架构定义中手动指定这些字段(如果我不使用爬虫),但它不会获取任何可能到达的新元数据字段,并且似乎没有指定静态架构本着雅典娜应该如何工作的精神。
我如何让它按预期运行(最好不放入虚拟行或自定义 SerDe)?
目前使用 SerDe org.openx.data.jsonserde.JsonSerDe。
感谢您的任何想法。
【问题讨论】:
标签: json amazon-web-services aws-glue amazon-athena