gpt4 book ai didi

amazon-web-services - AWS Glue Crawler 创建分区和文件表

转载 作者:行者123 更新时间:2023-12-04 15:50:40 31 4
gpt4 key购买 nike

我有一个非常基本的 s3 设置,我想使用 Athena 进行查询。数据全部存储在一个桶中,组织成年/月/日/小时文件夹。

|--data
| |--2018
| | |--01
| | | |--01
| | | | |--01
| | | | | |--file1.json
| | | | | |--file2.json
| | | | |--02
| | | | | |--file3.json
| | | | | |--file4.json
...

然后我设置了一个 AWS Glue Crawler 来抓取 s3://bucket/data .所有文件中的架构都是相同的。我希望我会得到一个数据库表,在年、月、日等上有分区。

我得到的是数万张 table 。每个文件都有一个表,每个父分区也有一个表。据我所知,为每个文件/文件夹创建了单独的表,没有一个可以在大日期范围内查询的总体表。

我按照说明操作 https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html尽我所能,但无法弄清楚如何构建我的分区/扫描,这样我就不会得到这么大的、几乎毫无值(value)的数据转储。

最佳答案

Glue Crawler 有很多不足之处。它 promise 可以解决很多情况,但它实际支持的内容确实有限。如果您的数据存储在目录中并且不使用 Hive 样式的分区(例如 year=2019/month=02/file.json ),它通常会困惑。当数据是由其他 AWS 产品(例如 Kinesis Firehose)生成时,尤其令人沮丧的是,您的数据看起来可能是这样。

根据您拥有多少数据,我可能会首先创建一个指向结构根的未分区 Athena 表。只有当您的数据增长超过数 GB 或数千个文件时,分区才变得重要。

您可以采用的另一种策略是添加一个 Lambda 函数,每当有新对象进入您的存储桶时,该函数就会由 S3 通知触发。该函数可以查看键并确定它属于哪个分区,然后使用 Glue API 将该分区添加到表中。添加一个已经存在的分区会从 API 返回一个错误,但只要你的函数捕获它并忽略它你就可以了。

关于amazon-web-services - AWS Glue Crawler 创建分区和文件表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51107021/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com