我的S3存储桶结构是这样的-> s3://input/orders/day=1/sample.csv
当我在 athena 上运行简单的选择查询时,我能够从使用爬虫创建的数据目录表中检索数据
但是,如果我手动创建一个数据目录表(通过逐字复制我从运行爬虫程序中获得的架构,如上所述)并在 athena 上运行简单的选择,我不会得到任何结果。
下面是爬虫生成的供参考的json schema,请注意,这与我用于手动创建数据目录表的schema相同,请帮忙
[ { “名称”:“汽车”, “类型”:“字符串” }, { “名称”:“英里/加仑”, “类型”:“双” }, { “名称”:“气缸”, “类型”:“bigint” }, { “名称”:“位移”, “类型”:“双” }, { “名称”:“马力”, “类型”:“bigint” }, { “名称”:“重量”, “类型”:“bigint” }, { “名称”:“acc”, “类型”:“双” }, { “名称”:“型号”, “类型”:“bigint” }, { “名称”:“产地”, “类型”:“字符串” }, { “命名日”, “类型”:“字符串”, "PartitionKey": "分区(0)" } ]
我只是想探索如何手动创建数据目录表
还必须添加分区才能查询并获取day=1分区下的数据。
这是由爬虫完成的,爬取路径,识别文件的模式,创建相应的表并添加找到的所有分区。
不幸的是,目前无法通过 Glue 控制台向 Glue 表添加/创建分区,但您有以下选项:
使用 Boto 3 SDK 添加 Glue 表分区。您可以使用AWS Boto 3 SDK 使用batch_create_partition()创建粘合分区或 create_partition() API。
使用 Alter Table Add Partition 命令。您可以运行更改表 通过 Athena 添加分区 SQL 命令手动添加分区 放入表中。
使用更改表的示例:
ALTER TABLE orders ADD PARTITION (day = 1);
请检查您的分区的数据类型,并根据需要进行相应修改。
另一种实用的方法是在 Athena 中使用以下命令:
MSCK REPAIR TABLE `mybucket_test_athena_001`;
修复表并添加所有现有分区。
https://docs.aws.amazon.com/athena/latest/ug/alter-table-add-partition.html