我知道MSCK REPAIR TABLE
可以更新外部表的元数据,使其包含当前分区。
要做到这一点,您只需要在表的根目录上执行ls
命令(假设该表只按一个列进行分区),并获取所有分区,这通常是一个不到1秒的操作。
但实际上,这个操作可能需要很长时间才能执行完毕(甚至可能在AWS Athena上超时)。
那么我的问题是,MSCK REPAIR TABLE
背后实际上做了什么以及为什么?
MSCK REPAIR TABLE
如何找到分区?
如果相关的话,还有一些额外的数据:
我们的数据都在S3上,无论是在EMR(Hive)还是Athena(Presto)上运行时都很慢,表中有大约450个分区,每个分区平均有90个文件,每个分区总共3GB,文件格式为Apache parquet格式。
。它只是
MSCK`的别名,还是做更少的工作? - Piotr Findeisen