[英]AWS Athena query on json like data
我有一个存储了一些数据的 S3 存储桶。 我想使用 Athena 表查询这些数据。
S3文件的结构:
{
OuterKey1:"OuterValue1",
OuterKey2:"{
InnerKey1:4.0,
InnerKey2:"someString"
}",
OuterKey3:1625833855741
}
这个结构看起来像 json,但它不完全是 json,因为密钥没有引号
我使用Glue-crawler从 S3 文件夹创建表。 Glue-crawler 将此结构识别为 json。但它将所有值分类为具有嵌套结构的键的字符串。
我想查询嵌套结构,比如InnerKey1 = 5.0 ,但由于整个结构都是字符串,所以我无法查询。
尝试过的事情:
有没有办法查询这样的结构? S3 文件是从 ddb 条目准备的,并已存储为 txt 文件。
更多观察:
当我从 S3 文件的内部嵌套结构中删除引号并上传测试存储桶时,爬虫将列识别为STRUCT而不是字符串,并且我能够查询内部嵌套结构。 但是我无法控制源代码,所以我无法更改源 S3 文件夹中的结构。
确定的其他可能的解决方案是使用 ETL 作业来解析和清理数据。 但它随后需要存储这些数据(我不想要,因为它是冗余数据)
是否有任何可能的解决方案可以通过 Athena 查询实现?
Athena 有两个 JSON serdes ,但都要求数据有效JSON。JSON 函数还要求数据有效 JSON。您可以使用正则表达式函数来提取内容,但这可能会很好。
不幸的是,Glue 的爬虫往往会错误识别事物并且并不总是创建适用于 Athena 的表。 在大多数情况下,您最好手动设置表并使用分区投影。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.