Hive视图和索引

作者: geekAppke | 来源:发表于2018-12-16 23:42 被阅读29次
和关系型数据库中的普通视图一样,hive也支持视图
将部分查询结果,用视图view表示出来,方便查询

索引:提高检索效率
要求,唯一性约束、非空、unique
经常查的列添加索引!
索引建的好,效率提高

Hive View视图

  1. 不支持物化视图物理文件并不存在!虚拟表也是表,但能显示出来
  2. 只能查询,不能做加载数据操作
  3. 视图的创建,只是保存一份元数据,查询视图时才执行对应的子查询
  4. view定义中若包含了ORDER BY/LIMIT语句,当查询视图时也进行ORDER BY/LIMIT语句操作,view当中定义的优先级更高
  5. view支持迭代视图

视图View语法:

创建视图
CREATE VIEW [IF NOT EXISTS] [db_name.]view_name 
  [(column_name [COMMENT column_comment], ...) ]
  [COMMENT view_comment]
  [TBLPROPERTIES (property_name = property_value, ...)]
  AS SELECT ... ;

查询视图:
select colums from view;
删除视图:
DROP VIEW [IF EXISTS] [db_name.]view_name;

视图例子

creat view v_psn AS select id, name from psn;
select * from v_psn;
drop view v_psn

物理磁盘/user/hive/warehouse中不存在v_psn
元数据库TBLS表,存在v_psn视图信息
show tables也能看得见

创建视图View

Hive索引

优化查询以及检索性能

创建索引:
create index t1_index on table psn(name) 
as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild 
in table t1_index_table;
as:指定索引器
in table:指定索引表,若不指定默认生成在default__psn_t1_index__表中

create index t2_index on table psn(name) 
as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild;


重建索引(建立索引之后必须重建索引才能生效)执行map-reduce,真正建索引往表里面加载数据
ALTER INDEX t1_index ON psn REBUILD;

查看存在的索引
show index on psn;

删除索引、是索引名,不是索引表名称!
会将对应的表删除
DROP INDEX IF EXISTS t1_index ON psn;

show tables也能看得见,索引表中没有数据;rebuild后才有数据
没有索引全局扫描,有索引后找偏移量!

hive> select * from t1_index_table;
OK
t1_index_table.name t1_index_table._bucketname  t1_index_table._offsets
小明1 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [0]
小明2 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [56]
小明3 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [112]
小明4 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [168]
小明5 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [219]
小明6 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [275]
小明7 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [331]
小明8 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [386]
小明9 hdfs://mycluster/user/hive/warehouse/psn/psn.data   [442]
Time taken: 0.256 seconds, Fetched: 9 row(s)
hive> show index on psn;
OK
idx_name    tab_name    col_names   idx_tab_name    idx_type    comment
t1_index                psn                     name                    t1_index_table          compact         
t2_index                psn                     name                    default__psn_t2_index__ compact

Hive Lateral View

  1. Lateral View
    于和UDTF函数(explodesplit)结合来使用。
  2. 首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚拟表。
  3. 主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题
语法:
  • LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)

统计人员表中共有多少种爱好、多少个城市?

hive> select explode(likes) from psn;

hive> select count(distinct(col1)), count(distinct(col2)) from psn
LATERAL VIEW explode(likes) psn AS col1 
LATERAL VIEW explode(address) psn AS col2, col3;
…… ……
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 2.91 sec   HDFS Read: 12601 HDFS Write: 4 SUCCESS
Total MapReduce CPU Time Spent: 2 seconds 910 msec
OK
_c0 _c1
4   2

地址是map=key-value

参考资料

Hadoop集群上搭建Hive
Hive建表并加载数据
Hive参数和动态分区
Hive分桶

相关文章

  • Hive视图和索引

    Hive View视图 不支持物化视图,物理文件并不存在!虚拟表也是表,但能显示出来 只能查询,不能做加载数据操作...

  • day39-Python连接MySQL

    一、视图和索引 1.视图 1.创建视图 2.查看视图 3.删除视图 2.索引 1.创建索引 2.删除索引 注意:表...

  • Hive 1.2.1 分区和分捅

    1. 借鉴 Hive学习笔记——Hive中的分桶Hive分区和分桶(0925)HIVE表索引,分区和分桶的区别 2...

  • HIVE表索引,分区和分桶的区别

    1.索引    Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外...

  • 索引和视图

  • 大数据开发之Hive篇13-Hive的索引

    备注:Hive 版本 2.1.1 一.Hive索引简介 Hive索引的目标是提高对表的某些列进行查询查找的速度。如...

  • MySQL--索引

    MySQL索引 查看索引 创建索引 创建唯一索引 创建主键索引 删除索引 删除主键 MySQL视图 创建视图 删除...

  • Hive-索引

    简介 Hive从0.7.0版本开始加入了索引,目的是提高Hive表指定列的查询速度。没有索引的时候,Hive在执行...

  • mysql高级:视图、事务、索引

    # mysql高级:视图、事务、索引 * 视图 * 事务 * 索引 * 账户管理 * 主从 ## 1.视图 动态抽...

  • 一文教你学会Hive视图和索引

    前言 我们在写HQL有没有遇到过数据量特别大的时候比如,使用HQL 处理起来非常复杂,非常慢,这时候我们可以使用...

网友评论

    本文标题:Hive视图和索引

    本文链接:https://www.haomeiwen.com/subject/rayfkqtx.html