hive表之索引

1,查看表employees索引信息:

show formatted index on employees

2,说明:
原表是user
创建索引后的表是user_index_table
索引是user_index

 

 

先创建原表

create table user(
id int, 
name string

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;

 

往原表里导入数据

LOAD DATA LOCAL INPATH '/export1/tmp/wyp/row.txt' OVERWRITE INTO TABLE user;

 

 

给原表做个测试

SELECT * FROM user where id =500000;
Total MapReduce CPU Time Spent: 5 seconds 630 msec
OK
500000 wyp.
Time taken: 14.107 seconds, Fetched: 1 row(s)
可以看出,一共用了14.107s。

 

 

在原表user上创建索引user_index,得到创建索引后的表user_index_table

CREATE INDEX user_index ON TABLE user(id) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH deferred REBUILD IN TABLE user_index_table;
或者如下写都是一样的,建议如下写
hive > create index user_index on table user(id) 
> as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' 
> with deferred rebuild
> IN TABLE user_index_table;

 

 

给原表user更新数据

ALTER INDEX user_index on user REBUILD;

 

 

删除索引

DROP INDEX user_index on user;

 

 

查看索引

SHOW INDEX on user;

 

创建表和索引案例

步骤一:创建索引测试表

CREATE TABLE index_test(
id INT,
name STRING
)
PARTITIONED BY (dt STRING)
ROW FORMAT DELIMITED FILEDS TERMINATED BY ',';
说明:
创建一个索引测试表 index_test,dt作为分区属性,
“ROW FORMAT DELIMITED FILEDS TERMINATED BY ','” 表示用逗号分割字符串,默认为‘\001’。

 

 

 

步骤二:创建临时索引表

create table index_tmp(
id INT,
name STRING,
dt STRING
)
ROW FORMAT DELIMITED FILEDS TERMINATED BY ',';
说明:临时索引表是table index_tmp

 

 

步骤三:加载数据到临时索引表中

load data local inpath '/home/hadoop/djt/test.txt' into table index_tmp;

 

 

 

 

步骤四:设置 Hive 的索引属性来优化索引查询

set hive.exec.dynamic.partition.mode=nonstrict;----设置所有列为 dynamic partition
set hive.exec.dynamic.partition=true;----使用动态分区

 

 

 

步骤五:查询临时索引表中的数据,插入到索引测试表中。

insert overwrite table index_test partition(dt) select id,name,dt from index_tmp;

 

 

 

步骤六:使用 索引测试表,在属性 id 上创建一个索引 

create index index1_index_test on table index_test(id) as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH DEFERERD REBUILD;
建议如下写
create index index1_index_test on table index_test(id)
as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'
WITH DEFERERD REBUILD;
索引是index1_index_test
索引测试表是 index_test
在索引测试表的属性id上创建的索引

 

 

 

步骤七:填充索引测试表的索引数据

alter index index1_index_test on index_test rebuild;

 

 

 

步骤八:查看索引测试表的创建的索引

show index on index_test

 

 

 

步骤九:查看索引测试表的分区信息

show partitions index_test;

 

 

 

步骤十:查看索引测试表的索引数据

$ hadoop fs -ls /usr/hive/warehouse/default_index_test_index1_index_test_

 

 

 

步骤十一:删除索引测试表的索引

drop index index1_index_test on index_test;
show index on index_test;

 

 

步骤十二:索引测试表的索引数据也被删除

$ hadoop fs -ls /usr/hive/warehouse/default_index_test_index1_index_test_
no such file or directory

 

 

步骤十三:修改配置文件信息

hive.optimize.index.filter 和 hive.optimize.index.groupby 参数默认是 false。
使用索引的时候必须把这两个参数开启,才能起到作用。
hive.optimize.index.filter.compact.minsize 参数
为输入一个紧凑的索引将被自动采用最小尺寸、默认5368709120(以字节为单位)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值