博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive视图
阅读量:5330 次
发布时间:2019-06-14

本文共 941 字,大约阅读时间需要 3 分钟。

Hive中的视图是只读的,所以无法通过视图向基表(base table)加载或插入数据。

视图的 SELECT 语句只在执行引用视图的语句时才执行。

对于上节用于 查询每年各个气象站气温最大值的均值 的HQL语句,可以先创建一个记录有效记录(即有特定quality值)的视图:

CREATE VIEW valid_records ASSELECT * FROM records2WHERE temperature != 999AND (quality=0 OR quality=1 OR quality=4 OR quality=5 OR quality=9);

创建视图时并不执行查询,查询只是存储在metastore中

SHOW TABLES命令的输出结果里包括视图。使用 DESCRIBE EXTENDED view_name查看某个视图的详细信息,包括用于定义它的那个查询。 

接下来,基于第一个视图,建立第二个视图(每个观测站每年的最高气温):

CREATE VIEW view_max_temperatures (station, year, max_temperature) ASSELECT station, year, MAX (temperature) FROM valid_recordsGROUP BY station, year;

在这个视图定义中,显示列出了列的名称。因为最高气温列是一个聚集表达式,如果我们不指明,Hive会自己创建一个别名(例如_C2)。

我们也可以在SELECT语句中使用AS子句来为列命名( MAX(temperature) AS max_temperature)。

 

有了这两个视图,现在我们就可以执行查询了:

SELECT station, year, AVG(max_temperature)

FROM view_max_temperatures

GROUP BY station, year;

这个查询的结果和前面使用子查询的结果是一样的。并且,Hive为他们所使用的MR作业也一样:2个,每个GROUP BY使用一个MR作业。

转载于:https://www.cnblogs.com/skyl/p/4737419.html

你可能感兴趣的文章
vsftpd虚拟用户【公司系统部分享】
查看>>
盒子box在网页中居中的方法
查看>>
Python之旅Day14 JQuery部分
查看>>
二十一、 Memento 备忘录(行为型模式)
查看>>
python 3.X中打包二进制数据存储字符串出错原因分析
查看>>
core--线程池
查看>>
B+树介绍
查看>>
redux-effect
查看>>
Swift和OC混编
查看>>
深度学习文献阅读笔记(6)
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
[PHP] excel 的导入导出
查看>>
SDL(01-10)
查看>>
网络爬虫基本原理(一)
查看>>
IM开发通信协议基础知识(一)---TCP、UDP、HTTP、SOCKET
查看>>
Android Studio 创建/打开项目时一直处于Building“project name”Gradle project info 的解决...
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>