教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

怎樣重建索引和刪除索引?

更新時間:2023年03月24日11時10分 來源:傳智教育 瀏覽次數:

重建索引

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

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

接下來,在虛擬機Node_03 中使用Hive客戶端工具Beeline,遠程連接虛擬機Node_02的HiveServer2服務操作Hive,重建數據庫hive_database中內部表managed_table_new的索引 index_staff_name,具體命令如下。

ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;

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

刪除索引

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

DROP INDEX [IF EXISTS] index_name ON table_name;

上述語法中,index_name表示索引名稱;table_name表示索引所在的數據表。接下來,在虛擬機Node_03中使用Hive客戶端工具Beeline,遠程連接虛擬機Node_02的HiveServer2服務操作Hive,刪除內部表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;”命令,查看數據庫hive_database中內部表managed_table_new的索引信息和查看當前數據庫下的所有表,如圖3-30所示。

刪除索引

可以看出,數據庫hive_database中不存在索引表index_name_table,并且內部表managed_table_new中的索引index_staff_name也不存在了。

開啟自動使用索引功能

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

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í)行,并且是針對于當前會話臨時生效。如果需要永久生效,可將上述配置添加到在虛擬機Node_02的Hive配置文件hive=site.xml中。 



0 分享到:
和我們在線交談!