javaee论坛

普通会员

225648

帖子

346

回复

360

积分

楼主
发表于 2017-06-08 13:55:45 | 查看: 563 | 回复: 1

大数据Spark “蘑菇云”行动第91课:Hive中Index和Bucket案例实战及存储类型实战详解


索引:例如每行扫描,假如1000列,要扫1000列;但做了索引以后,key为关键字做索引,只扫描1列.
     建立索引的时候,一般都有分区表!建立一个partition
     视图上不能建立索引;
     索引表存储格式可以与原有表存储格式不一样。



hive>
use hivestudy;
show tables;
desc rating;
CREATE INDEX index_ratings ON TABLE ratings(userid) AS 'org.apache.hadoop.hive.sql.index.compact.CompactIndexHandler' WITH DEFERRED REBUILD;
SHOW INDEX ON ratings;


 
查看一下数据,但里面是空的。假如在创建索引是我们使用“ WITH DEFERRED REBUILD”语句,则索引创建是为空,可以通过“Alter index ... REBUILD”在一个


partition上或所有partition上构建索引。
执行以下语句,查看索引有了目录了。但还是失败的,数据没有
hive〉 ALTER INDEX index_ratings ON ratings rebuild;




桶表:桶就是一个数据单位,表大的时候使用桶;例如5个桶表,根据key hash落到哪个桶中,提高查询速度。在企业中用的不多,但必须掌握。
先设置参数 hive.enforce.bucketing=true; 原先是一个目录,就变成了几个目录,例如设置3、5、9奇数个桶。


在分区表的基础上重来一次索引,在创建过程中实际移动数据,现在ok了
CREATE INDEX index_users ON TABLE users(userid) AS 'org.apache.hadoop.hive.sql.index.compact.CompactIndexHandler' WITH DEFERRED REBUILD;
ALTER INDEX index_ratings ON users rebuild;


select * from (hdfs webui查询的目录 user_index_user) 查询出了数据


存储格式的例子:
hive>
use default;

CREATE TABLE table_rc() .......as rcfile;

















普通会员

0

帖子

331

回复

359

积分
沙发
发表于 2024-04-02 10:03:33

围观

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017