文档章节

HiveQL:视图

LeeHH
 LeeHH
发布于 2017/02/13 10:27
字数 574
阅读 29
收藏 0

视图可以允许保存一个查询并想对待表一样对这个查询进行操作。

使用视图来降低查询复杂度

比如以下这个例子:

hive> from(
select * from people join cart
on (cart.people_id=people_id) where firstname='join'
) a select a.lastname where a.id=3;

可以使用视图来变成下面这两条HiveQL:

hive> create view shorter_join as
select * from people join cart
on (cart.people_id=people.id) where firstname='join';

hive> select lastname from shorter_join where id=3;

使用视图来限制基于条件过滤的数据

通过创建视图来限制数据访问可以用来保护信息不被随意查询:

比如我们有一张用户信息表,里面含有password之类的不想被别人查询到的信息,那就可以创建view来保护应用:

hive> create table userinfo(
firstname string,lastname string,ssn string,password string);

hive> create view safer_user_info as
select firstname,lastname from userinfo;

动态分区中的视图和map类型

Hive可将一行文本作为一个map而非一组固定的列,加上视图功能,就允许用户可以基于同一个物理表构建多个逻辑表。比如我们有如下的数据,其中^A作为集合内元素间的分隔符(这里就是指map的多个键值对之间的分隔符),然后使用^B作为map中的键和值之间的分隔符:

time^B2325543653513^Atype^Brequest^Astate^Bny^Acity^Bwhitepains^Apart^Bmuffler

下面我们来创建表:

hive> create external table dynamictable(cols map<string,string>)
row format delimited
fiflds terminated by '\004'
collection items terminated by '\001'
map keys terminated by '\002'
stored as textfile;

现在我们可以创建这样一个视图,其仅取type值等于request的city、state和part3个字段:

hive> create view order(state,city,part) as
select cols["state"],cols["city"],cols["part"]
from dynamictable
where clos["type"]="request";

我们再创建第二个视图,返回time和part2个字段作为列,限制条件死type值为response:

hive> create view shipments(time,part) as
select cols["time"],cols["part"]
from dynamictable
where cols["type"]="response";

其他

创建视图时也是可以使用一些子句的:

hive> create view if not exists shipments(time,part)
comment 'Time and parts for shipments.'
tblproperties ('creator'='me')
as select ...;

删除视图:

hive> drop view id exists shipments;

create table...like...结构同样适用于复制视图,只需在like表达式里面写视图名就可以了:

hive> create table shipments2
like shipments;

 

© 著作权归作者所有

上一篇: HiveQL:索引
下一篇: HiveQL:查询
LeeHH
粉丝 1
博文 37
码字总数 37428
作品 0
深圳
程序员
私信 提问
Hadoop Hive sql 语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功...

luanpeng825485697
2018/05/30
0
0
从SQL到HiveQL应改变的几个习惯

2009-10-30 @ taobao 引言 别名 虚拟列 IN INNER JOIN 分号字符 Insert Merge IS [NOT] NULL 引言 HiveQL非常像SQL,但二者并非等价,若不注意期间的一些差异,容易导致HiveQL的语义错误,或...

zhongl
2011/09/23
14.1K
0
Impala SQL 语言参考

Impala SQL 语言参考 Cloudera Impala 的查询语言是基于 SQL 的。为了保护用户在技能和查询设计方面的已有投资,Impala 提供与 Hive 查询语言(HiveQL)的高度兼容: 因为使用与 Hive 记录表结...

weiqingbin
2013/12/20
11.1K
1
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(四)

四、角色扮演维度 当一个事实表多次引用一个维度表时会用到角色扮演维度。例如,一个销售订单有一个是订单日期,还有一个交货日期,这时就需要引用日期维度表两次。 本节将说明两类角色扮演维...

wzy0623
2016/07/18
0
0
Java私塾:Hive QL——深入浅出学Hive

目录: 初始Hive Hive安装与配置 Hive 内建操作符与函数开发 Hive JDBC hive参数 Hive 高级编程 Hive QL Hive Shell 基本操作 hive 优化 Hive体系结构 Hive的原理 配套视频课程 第一部分:D...

sunfei
2013/12/10
871
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.3K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
39
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部