2.2.2Hive创建索引

Hive创建索引

一、       意义

        索引是标准的数据库技术,用户可以在某些列上创建索引来加速某些操作,给一个表创建的索引数据被保存在另外的表中。 用户可以使用EXPLAIN语法来分析HiveQL语句是否可以使用索引来提升用户查询的性能。索引需要更多的磁盘空间,并且创建维护索引也会有一定的代价。用户必须要权衡从索引得到的好处和代价。

二、       创建一张表

2.2.2Hive创建索引_第1张图片


2.2.2Hive创建索引_第2张图片

            创建:

create table t_user(id int, namestring) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;

2.2.2Hive创建索引_第3张图片

2.2.2Hive创建索引_第4张图片

            导入数据:

2.2.2Hive创建索引_第5张图片

三、       创建索引之前测试

select * from t_user where id = 0053;

2.2.2Hive创建索引_第6张图片

select * from t_user where id < 0053 and id > 0010order by id limit 10;

2.2.2Hive创建索引_第7张图片

                开始走MapReduce

2.2.2Hive创建索引_第8张图片

            总共需要42秒多。

二、       对表创建索引

            创建:

create index user_index on table t_user(id) as'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferredrebuild in table user_index_table;

2.2.2Hive创建索引_第9张图片

                 修改:

alter index user_indexon t_user rebuild;

2.2.2Hive创建索引_第10张图片

                 查询:

select * fromuser_index_table limit 5;

2.2.2Hive创建索引_第11张图片

                创建成功。

三、      创建索引后再查询

                查询语句:

select * from t_user where id < 0053 and id > 0010order by id limit 10;

2.2.2Hive创建索引_第12张图片

                效果不明显。可能是由于数据还不够多。

 



你可能感兴趣的:(Hadoop)