首页技术文章正文

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

更新时间:2023-03-23 来源:黑马程序员 浏览量:

重建索引

索引创建完成后还无法使用索引功能,此时索引表中是没有数据的,需要通过重建索引操作,将索引列的值、索引列的值在HDFS对应的数据文件路径和索引列的值在数据文件中的偏多量,这些数据加载到索引表中。重建索引的语法格式如下。

ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;
上述语法中,PARTITION partition_spee为可选,表示只重建指定分区内的索引;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;

上述命令执行完成后,便可以在数据表managed_table_new使用索引功能。需要注意的是,若数据表managed_table_new中的数据发生变化,则数据表不会自动重建索引,需要手动重建索引生成新的索引表数据。

删除索引

删除索引是指删除数据表中创建的索引,删除索引的同时会删除索引对应的索引表,删除索引语法格式如下。、

DROP INDEX [IF EXISTS] index_name ON table_name;

上述语法中,index_name表示索引名称;table_name表示索引所在的数据表。接下来,在虚拟机Node_03中使用Hive客户端工具Beeline,远程连接虚拟机Node_02的HiveServer2服务操作Hive,删除内部表managed_table_new创建的索引index_staff_name,具体命令如下。

DROP INDEY IF EXISTS index_staff_name ON managed_ table_new;

上述命令执行完成后,在Hive客户端工具Beeline中分别执行“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中已创建索引的数据表时,是不会使用索引功能的,需要在Hive中开启自动使用索引功能,此时涉及查询创建索引的数据表时,就会使用索引功能去优化查询,开启自动使用索引功能相关配置如下。

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中执行,并且是针对于当前会话临时生效。如果需要永久生效,可将上述配置添加到在虚拟机Node_02的Hive配置文件hive=site.xml中。 





分享到:
在线咨询 我要报名
和我们在线交谈!