【发布时间】:2018-06-29 17:47:01
【问题描述】:
我有一个非常基本的 s3 设置,我想针对使用 Athena 进行查询。数据全部存储在一个桶中,组织成年/月/日/小时文件夹。
|--data
| |--2018
| | |--01
| | | |--01
| | | | |--01
| | | | | |--file1.json
| | | | | |--file2.json
| | | | |--02
| | | | | |--file3.json
| | | | | |--file4.json
...
然后我设置了一个 AWS Glue 爬虫来爬取 s3://bucket/data。所有文件中的架构都是相同的。我希望我会得到一个数据库表,分区是年、月、日等。
我得到的是成千上万张桌子。每个文件都有一个表,每个父分区也有一个表。据我所知,为每个文件/文件夹创建了单独的表,没有一个可以在较大日期范围内查询的总体表。
我尽我所能遵循了https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html 的说明,但无法弄清楚如何构建我的分区/扫描,这样我就不会得到这个巨大的、几乎毫无价值的数据转储。
【问题讨论】:
-
您是否尝试将文件放在s单个文件夹中而不进行分区并对其进行爬取?您是否尝试将分区命名为
year=2018/month=01/day=01?你的 json 文件是什么样子的? -
我的 json 非常简单
{"x":"text","y":"text","z":"text"}。我没有尝试命名分区,这会减少实际创建的表/分区数量吗?你能像配置爬虫时写的那样命名分区内联吗?不,我的数据已经作为实时数据管道的输出存在,我没有重新组织。文件夹结构是经过深思熟虑的,我不会乱用它。 -
爬虫无法内联分区。命名 '
= ' 只是使用分区更方便的方法,因为它们将在表中正确命名,而不是 'partition_0'、'partition_1' 等。我不确定这是否会影响爬虫虽然。您的文件看起来不错,当文件包含 json 对象数组时我遇到了问题,并且通过添加自定义分类器修复了它。
标签: amazon-web-services amazon-s3 amazon-athena aws-glue