重新加载 Athena table 分区是一项昂贵的操作吗?
Is reloading Athena table partitions an expensive operation?
我的代码目前 运行 是一个 CREATE EXTERNAL TABLE IF NOT EXISTS <table> ...
后跟 MSCK REPAIR <table>
操作 table 以加载分区。我每次都 运行 这个序列而不检查 table 是否已经存在或者分区是否改变了。
此流程计划每晚 运行,而我正在处理的 table 没有大量数据(至少目前是这样)。所以我的问题是,我应该优化我的查询调用以仅在分区更改时才重新加载分区,还是我可以继续盲目调用 CREATE TABLE
和 MSCK REPAIR
?
如果分区数量不断增加,那么DROP TABLE
和MSCK REPAIR TABLE
将花费更多时间。
如果您的 S3 位置包含大量文件(而不是 MSCK
命令),最好创建一次 table 并考虑添加 ALTER TABLE table-name ADD PARTITION IF NOT EXIST(some-column=value) LOCATION 's3-partition-location'
。
我的代码目前 运行 是一个 CREATE EXTERNAL TABLE IF NOT EXISTS <table> ...
后跟 MSCK REPAIR <table>
操作 table 以加载分区。我每次都 运行 这个序列而不检查 table 是否已经存在或者分区是否改变了。
此流程计划每晚 运行,而我正在处理的 table 没有大量数据(至少目前是这样)。所以我的问题是,我应该优化我的查询调用以仅在分区更改时才重新加载分区,还是我可以继续盲目调用 CREATE TABLE
和 MSCK REPAIR
?
如果分区数量不断增加,那么DROP TABLE
和MSCK REPAIR TABLE
将花费更多时间。
如果您的 S3 位置包含大量文件(而不是 MSCK
命令),最好创建一次 table 并考虑添加 ALTER TABLE table-name ADD PARTITION IF NOT EXIST(some-column=value) LOCATION 's3-partition-location'
。