重新加载 Athena table 分区是一项昂贵的操作吗?

Is reloading Athena table partitions an expensive operation?

我的代码目前 运行 是一个 CREATE EXTERNAL TABLE IF NOT EXISTS <table> ... 后跟 MSCK REPAIR <table> 操作 table 以加载分区。我每次都 运行 这个序列而不检查 table 是否已经存在或者分区是否改变了。

此流程计划每晚 运行,而我正在处理的 table 没有大量数据(至少目前是这样)。所以我的问题是,我应该优化我的查询调用以仅在分区更改时才重新加载分区,还是我可以继续盲目调用 CREATE TABLEMSCK REPAIR?

如果分区数量不断增加,那么DROP TABLEMSCK REPAIR TABLE将花费更多时间。

如果您的 S3 位置包含大量文件(而不是 MSCK 命令),最好创建一次 table 并考虑添加 ALTER TABLE table-name ADD PARTITION IF NOT EXIST(some-column=value) LOCATION 's3-partition-location'