Hive的视图其实是一个虚表,视图可以允许保存一个查询,并像对待表一样对这个查询进行操作,视图是一个逻辑结构,并不会存储数据。
Hive中的索引只有有限的功能,Hive中没有主键和外键的概念,可以通过对一些字段建立索引来加速某些操作。Hive对外部表和视图都是可以建立索引的。若有索引表,删除一个索引将会删除这个索引表。若被索引的表被删除了,那么对应的索引和索引表也会被删除;若原始表的某个分区被删除了,那么这个分区对应的分区索引同时会被删除掉。
下面是Hive视图与索引的概念和使用,enjoy~~
一、视图
1,含义
视图是一个虚拟表,其内容由查询定义。Hive 中的视图和RDBMS中视图的概念一致,都是一组数据的逻辑表示,本质上就是一条SELECT语句的结果集。视图是纯粹的逻辑对象,没有关联的存储(Hive 3.0.0引入的物化视图除外),当查询引用视图时,Hive可以将视图的定义与查询结合起来,例如将查询中的过滤器推送到视图中。
2,特点
(1)不支持物化视图 ;
(2)只能查询,不能做加载数据操作 ;
(3)视图的创建,只是保存一份元数据,查询视图时才执行对应的子查询 ;
(4)view定义中若包含了ORDER BY/LIMIT语句,当查询视图时也进行了ORDER BY/LIMIT语句操作,view当中定义的优先级更高 ;
(5)Hive视图支持迭代视图。
3,意义
(1) 使用视图使数据操作更简便,相当于封装了sql语句,类似于关系型数据库中的存储过程。
(2) 使用视图,基表中的数据有了一定的安全性,使用视图可以基于限制条件过滤数据,通过视图限制数据访问可以保护信息不被随意查询。
4,视图的操作
(1)新建视图
CREATE VIEW [IF NOT EXISTS] [db_name.]view_name
[(column_name [COMMENT column_comment], ...) ]
[COMMENT view_comment]
[TBLPROPERTIES (property_name = property_value, ...)]
AS SELECT ... ;