轉載:https://blog.csdn.net/xiaobao5214/article/details/85062176
使用方式
invalidate metadata是用於刷新全庫或者某個表的元數據,包括表的元數據和表內的文件數據,它會首先清楚表的緩存,然后從metastore中重新加載全部數據並緩存,該操作代價比較重,主要用於在hive中修改了表的元數據,需要同步到impalad,例如create table/drop table/alter table add columns等。
invalidate metadata 語法:
-
invalidate metadata //重新加載所有庫中的所有表
-
invalidate metadata [table] //重新加載指定的某個表
refresh是用於刷新某個表或者某個分區的數據信息,它會重用之前的表元數據,僅僅執行文件刷新操作,它能夠檢測到表中分區的增加和減少,主要用於表中元數據未修改,數據的修改,例如insert into、load data、alter table add partition、llter table drop partition等,如果直接修改表的hdfs文件(增加、刪除或者重命名)也需要指定refresh刷新數據信息。
refresh 語法:
-
refresh [table] //刷新某個表
-
refresh [table] partition [partition] //刷新某個表的某個分區
使用原則
如果在使用過程中涉及到了元數據或者數據的更新,則需要使用這兩者中的一個操作完成,具體如何選擇需要根據如下原則:
invalidate metadata操作比refresh要重量級
如果涉及到表的schema改變,使用invalidate metadata [table]
如果只是涉及到表的數據改變,使用refresh [table]
如果只是涉及到表的某一個分區數據改變,使用refresh [table] partition [partition]
禁止使用invalidate metadata什么都不加,寧願重啟catalogd。