如何正确使用
通过上面的简单分析,容易做出以下总结:如果数仓中发生了增删表或改变表结构的行为,如create table、drop table、alter table add column等,就使用invalidate metadata [table]语句。
如果数仓中某表加入了新数据,或者有分区的改动,如load data、alter table add partition等,就使用refresh [table] (partition [partition])语句。
invalidate metadata比起refresh而言要重量级得多,并且它造成impalad之间查询不一致也会更严重。因此,也几乎禁止使用不带表名的invalidate metadata语句。
如果数仓中涉及到非常大批量的元数据更改,那么建议直接重启catalogd和statestored,这总比使用不带表名的invalidate metadata来得高效一些。
参考:
https://blog.csdn.net/nazeniwaresakini/article/details/104220219