我的代码当前运行CREATE EXTERNAL TABLE IF NOT EXISTS <table> ...
,然后在该表上执行MSCK REPAIR <table>
操作以加载分区。我每次都运行此序列,而不检查表是否已存在或者分区是否已更改。
这个流程计划在每晚运行,而我正在处理的表格没有大量数据(至少目前为止)。所以我的问题是,我应该优化我的查询调用,只有在分区发生变化时才重新加载分区,或者我是否可以盲目地调用CREATE TABLE
和MSCK REPAIR
?
答案 0 :(得分:1)
如果分区数量不断增加,那么DROP TABLE
和MSCK REPAIR TABLE
将花费更多时间。
如果您的S3位置包含大量文件(而不是ALTER TABLE table-name ADD PARTITION IF NOT EXIST(some-column=value) LOCATION 's3-partition-location'
命令),最好创建一次表并考虑添加MSCK
。