当Athena表格添加新的分区时,我们可以使用Glue Crawler或MSCK REPAIR TABLE来更新元信息。它们的成本是什么?哪一个更受欢迎?
当Athena表格添加新的分区时,我们可以使用Glue Crawler或MSCK REPAIR TABLE来更新元信息。它们的成本是什么?哪一个更受欢迎?
MSCK REPAIR TABLE
命令要求您的S3键包含分区方案,如此处记录的文档。如果您的S3键不包含分区方案,则MSCK REPAIR TABLE
命令将返回缺少的分区,但您仍然需要添加它们。另一个区别是,MSCK REPAIR TABLE
命令可以在30分钟后超时(默认Athena查询时长),而Glue爬虫则不会。'ALTER TABLE database.table ADD
PARTITION (partition_name='PartitionValue') location 's3://bucket/path/partition'
如果必须使用Glue或Athena,我会评估哪种方式更适合您的流程。 MSCK REPAIR TABLE
命令可能更易于管理,但如果您的分区数据很多或者它们没有正确地分区,则可能会遇到问题。此外,您将需要一种自动运行该命令的方法。 Glue Crawlers 可以配置触发器。
ALTER TABLE ... ADD PARTITION () ...
) 来完成,就像 @KiteCoder 的回答一样,或者你也可以直接通过 Glue API 来完成。CreatePartition
。它需要一个名为 StorageDescriptor
的对象,该对象定义了表中的所有列和数据类型,但对于现有表,可以从 GetTable 操作中检索到该结构。
MSCK REPAIR TABLE
,AWS SDK提供了Athena API(com.amazonaws.services.athena
)以进行直接SQL访问,其中包括MSCK REPAIR TABLE
。示例可以在这里找到。 - Fang ZhangMSCK REPAIR TABLE
,它们在你只想添加新分区时都非常低效。如果您无法在上传新数据时添加分区,请考虑编写一个Lambda函数,以响应S3通知添加分区。 - Theo