如何解决如何从 AWS Athena 检索原始 S3 数据
我有一个通过 Kinesis Firehose 归档 JSON 对象的 S3 存储桶。每个存储桶对象可以包含多个 JSON 对象,这些对象在架构中可能会有所不同。
桶结构
bucket
└── archive
└── 2021
└── 04
├── 11
| ├── 10
| | └── object-1
└── 14
└── 09
└── object-2
第一个对象 - s3://bucket/archive/2021/04/11/10/object-1
{"id":1,"timestamp":"2021-04-11T10:01:20Z","nestedData":{"morenesting":{"someData":"value"}}}
{"id":2,"timestamp":"2021-04-11T12:00:31Z","someDifferentlynestedData":{"differentnesting":{"someOtherData":"value"}}}
第二个对象 - s3://bucket/archive/2021/04/14/09/object-2
{"id":3,"timestamp":"2021-04-14T09:02:30Z","nonestedData":"value"}
我已经设置了一个 glue Crawler 来根据我的数据创建数据目录表。
数据目录表
我正在使用 AWS Athena 查询该数据。查询时,我可以使用以下查询检索目标 JSON 对象的所有列:
所有列查询
SELECT *
FROM archive
WHERE nesteddata.morenesting.somedata = 'value';
所有列查询结果
我还可以使用以下查询检索 JSON 对象的 S3 对象路径:
S3 路径查询
SELECT "$path"
FROM archive
WHERE nesteddata.morenesting.somedata = 'value';
S3 路径查询结果
问题
我的问题是,如何通过查询检索原始 JSON 对象,即如何获得返回如下内容的查询结果:
解决方法
如果您不介意在另一个表上使用这种表示,您可以使用 string
链接通过 Athena 控制台简单地创建一个带有单个 Create table
字段的表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。