Hive视图与物化视图

1. 视图

  • Hive中的视图是一种虚拟表,只保存定义,不实际存储数据。
  • 通常从真实的物理表查询中创建生成视图,也可以从已经存在的视图上创建新视图。
  • 创建视图时,将冻结视图的架构,如果删除或更改基础表,则视图将失败
  • 视图是用来简化操作的,不缓冲记录,也没有提高查询性能

1.2 案例

	--1.创建视图
	create view v_usa_covid19 as select count_date,country,state,deaths from t_usa_covid19 limit 5;
	--从已有的视图中创建视图
	create view v_usa_covid19_from_view as select * from v_usa_covid19 limit 2;
	--2.显示已有的视图
	show views; --hive v2.2.0之后支持
	--3.视图的查询使用
	select * from v_usa_covid19;--相当于是执行创建视图时的select语句
	--4.查看视图的定义
	show create table v_usa_covid19;
	--5.删除视图
	drop view v_usa_covid19_from_view;
	--6.更改视图属性
	alter view v_usa_covid19 set tblproperties('comment'='This is a view');
	--7.更改视图定义
	alter view v_usa_covid19 as select country,deaths from t_usa_covid19 limit 2;

1.3 视图的好处

  • 将真实表中特定的列提供给用户,保护数据隐私
  • 降低查询复杂度,优化查询语句(注意不是提高查询效率)。

2. Hive3.0新特性:Materialized View 物化视图

  • 物化视图是一个包括查询结果的数据库对象,可以用于预先计算并保存表连接或聚集等耗时较多的操作结果。在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果。
  • 使用物化视图的目的就是通过预计算,提高查询性能,需要占用一定的存储空间。
  • Hive提供物化视图的查询自动重写机制(基于Apache Calcite实现)。
  • Hive提供了物化视图存储选择机制,可以本地存储在Hive,也可以通过用户自定义storage handlers存储在其他系统(如Druid)。
  • Hive引进物化视图的目的就是为了优化数据查询访问的效率,相当于从数据预处理的角度优化数据访问。
  • Hive从3.0丢弃了index索引的语法支持,推荐使用物化视图和列式存储文件格式来加快查询速度。

2.1 物化视图语法

  1. 物化视图创建后,select查询执行胡数据自动落地,“自动”也即在query的执行期间,任何用户对该物化视图是不可见的,执行完毕之后物化视图可用。
  2. 默认情况下,创建好的物化视图可被用于查询优化器optimizer查询重写,在物化视图创建期间可以通过disablerewrite参数设置禁止使用。
    在这里插入图片描述

2.2 基于物化视图的查询重写

  • 物化视图创建后即可用于相关查询的加速,即:用户提交查询query,若改query经过重写后可以命中已经存在的物化视图,则直接通过物化视图查询数据返回结果,以实现查询加速。
  • 是否重写查询使用物化视图可以通过全局参数控制默认为true:hive.materializedview.rewriting=true;
  • 用户可以选择性的控制指定的物化视图查询重写机制
alter materialied view [db.name.]materialized_view_name enable|disable rewrite;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值