1.hue中要使用Perform incremental metadata update,不要使用Invalidate all metadata and rebuild index,如果是invalidate metadata什麼都不加,甯願重新啟動catalogd。
2.如果涉及到表的schema改變,使用invalidate metadata [table]
3.如果隻是涉及到表的資料改變,使用refresh [table]。
4.如果隻是涉及到表的某一個分區資料改變,使用refresh [table] partition [partition]。
5.invalidate metadata操作比refresh要重量級。
使用方式
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]