更新時(shí)間:2023年03月24日11時(shí)10分 來(lái)源:傳智教育 瀏覽次數(shù):
索引創(chuàng)建完成后還無(wú)法使用索引功能,此時(shí)索引表中是沒(méi)有數(shù)據(jù)的,需要通過(guò)重建索引操作,將索引列的值、索引列的值在HDFS對(duì)應(yīng)的數(shù)據(jù)文件路徑和索引列的值在數(shù)據(jù)文件中的偏多量,這些數(shù)據(jù)加載到索引表中。重建索引的語(yǔ)法格式如下。
ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;上述語(yǔ)法中,PARTITION partition_spee為可選,表示只重建指定分區(qū)內(nèi)的索引;index_name表示索引名稱;table_name表示索引所在的數(shù)據(jù)表。
接下來(lái),在虛擬機(jī)Node_03 中使用Hive客戶端工具Beeline,遠(yuǎn)程連接虛擬機(jī)Node_02的HiveServer2服務(wù)操作Hive,重建數(shù)據(jù)庫(kù)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ù)表不會(huì)自動(dòng)重建索引,需要手動(dòng)重建索引生成新的索引表數(shù)據(jù)。
刪除索引是指刪除數(shù)據(jù)表中創(chuàng)建的索引,刪除索引的同時(shí)會(huì)刪除索引對(duì)應(yīng)的索引表,刪除索引語(yǔ)法格式如下。、
DROP INDEX [IF EXISTS] index_name ON table_name;
上述語(yǔ)法中,index_name表示索引名稱;table_name表示索引所在的數(shù)據(jù)表。接下來(lái),在虛擬機(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ù)庫(kù)hive_database中內(nèi)部表managed_table_new的索引信息和查看當(dāng)前數(shù)據(jù)庫(kù)下的所有表,如圖3-30所示。
可以看出,數(shù)據(jù)庫(kù)hive_database中不存在索引表index_name_table,并且內(nèi)部表managed_table_new中的索引index_staff_name也不存在了。
默認(rèn)情況下,在查詢Hive中已創(chuàng)建索引的數(shù)據(jù)表時(shí),是不會(huì)使用索引功能的,需要在Hive中開(kāi)啟自動(dòng)使用索引功能,此時(shí)涉及查詢創(chuàng)建索引的數(shù)據(jù)表時(shí),就會(huì)使用索引功能去優(yōu)化查詢,開(kāi)啟自動(dòng)使用索引功能相關(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í)行,并且是針對(duì)于當(dāng)前會(huì)話臨時(shí)生效。如果需要永久生效,可將上述配置添加到在虛擬機(jī)Node_02的Hive配置文件hive=site.xml中。
北京校區(qū)