天天看點

impala兩種方式同步hive中繼資料

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]