首頁技術(shù)文章正文

如何重建索引和刪除索引?

更新時間:2023-03-23 來源:黑馬程序員 瀏覽量:

重建索引

索引創(chuàng)建完成后還無法使用索引功能,此時索引表中是沒有數(shù)據(jù)的,需要通過重建索引操作,將索引列的值、索引列的值在HDFS對應(yīng)的數(shù)據(jù)文件路徑和索引列的值在數(shù)據(jù)文件中的偏多量,這些數(shù)據(jù)加載到索引表中。重建索引的語法格式如下。

ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;
上述語法中,PARTITION partition_spee為可選,表示只重建指定分區(qū)內(nèi)的索引;index_name表示索引名稱;table_name表示索引所在的數(shù)據(jù)表。

接下來,在虛擬機(jī)Node_03 中使用Hive客戶端工具Beeline,遠(yuǎn)程連接虛擬機(jī)Node_02的HiveServer2服務(wù)操作Hive,重建數(shù)據(jù)庫hive_database中內(nèi)部表managed_table_new的索引 index_staff_name,具體命令如下。

ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;

上述命令執(zhí)行完成后,便可以在數(shù)據(jù)表managed_table_new使用索引功能。需要注意的是,若數(shù)據(jù)表managed_table_new中的數(shù)據(jù)發(fā)生變化,則數(shù)據(jù)表不會自動重建索引,需要手動重建索引生成新的索引表數(shù)據(jù)。

刪除索引

刪除索引是指刪除數(shù)據(jù)表中創(chuàng)建的索引,刪除索引的同時會刪除索引對應(yīng)的索引表,刪除索引語法格式如下。、

DROP INDEX [IF EXISTS] index_name ON table_name;

上述語法中,index_name表示索引名稱;table_name表示索引所在的數(shù)據(jù)表。接下來,在虛擬機(jī)Node_03中使用Hive客戶端工具Beeline,遠(yuǎn)程連接虛擬機(jī)Node_02的HiveServer2服務(wù)操作Hive,刪除內(nèi)部表managed_table_new創(chuàng)建的索引index_staff_name,具體命令如下。

DROP INDEY IF EXISTS index_staff_name ON managed_ table_new;

上述命令執(zhí)行完成后,在Hive客戶端工具Beeline中分別執(zhí)行“SHOW INDEXES ON managed_table_new FROM hive_database;”命令和“SHOW TABLES;”命令,查看數(shù)據(jù)庫hive_database中內(nèi)部表managed_table_new的索引信息和查看當(dāng)前數(shù)據(jù)庫下的所有表,如圖3-30所示。

刪除索引

可以看出,數(shù)據(jù)庫hive_database中不存在索引表index_name_table,并且內(nèi)部表managed_table_new中的索引index_staff_name也不存在了。

開啟自動使用索引功能

默認(rèn)情況下,在查詢Hive中已創(chuàng)建索引的數(shù)據(jù)表時,是不會使用索引功能的,需要在Hive中開啟自動使用索引功能,此時涉及查詢創(chuàng)建索引的數(shù)據(jù)表時,就會使用索引功能去優(yōu)化查詢,開啟自動使用索引功能相關(guān)配置如下。

SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
SET hive.optimize.index.filter=true;
SET hive.optimize.index.filter.compact.minsize=0;

需要注意的是,上述配置需要在Hive客戶端工具Beeline中執(zhí)行,并且是針對于當(dāng)前會話臨時生效。如果需要永久生效,可將上述配置添加到在虛擬機(jī)Node_02的Hive配置文件hive=site.xml中。 





分享到:
在線咨詢 我要報(bào)名
和我們在線交談!