AWS Glue - 带分区的手动数据目录表

问题描述 投票:0回答:1

我的S3存储桶结构是这样的-> s3://input/orders/day=1/sample.csv

当我在 athena 上运行简单的选择查询时,我能够从使用爬虫创建的数据目录表中检索数据

但是,如果我手动创建一个数据目录表(通过逐字复制我从运行爬虫程序中获得的架构,如上所述)并在 athena 上运行简单的选择,我不会得到任何结果。

下面是爬虫生成的供参考的json schema,请注意,这与我用于手动创建数据目录表的schema相同,请帮忙

[ { “名称”:“汽车”, “类型”:“字符串” }, { “名称”:“英里/加仑”, “类型”:“双” }, { “名称”:“气缸”, “类型”:“bigint” }, { “名称”:“位移”, “类型”:“双” }, { “名称”:“马力”, “类型”:“bigint” }, { “名称”:“重量”, “类型”:“bigint” }, { “名称”:“acc”, “类型”:“双” }, { “名称”:“型号”, “类型”:“bigint” }, { “名称”:“产地”, “类型”:“字符串” }, { “命名日”, “类型”:“字符串”, "PartitionKey": "分区(0)" } ]

我只是想探索如何手动创建数据目录表

amazon-web-services aws-glue
1个回答
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

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.create_partition

© www.soinside.com 2019 - 2024. All rights reserved.