Hive的 Lateral View、视图、索引

Lateral View

hive Lateral View 是为了优化 UDTF

Lateral View用于和UDTF函数(explode、split)结合来使用。

首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚拟表。

主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题

语法:

LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)

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

select count(distinct(myCol1)), count(distinct(myCol2)) from psn2
LATERAL VIEW explode(likes) myTable1 AS myCol1
LATERAL VIEW explode(address) myTable2 AS myCol2, my

hive View视图

和关系型数据库中的普通视图一样,hive也支持视图
特点:

  1. 不支持物化视图
  2. 只能查询,不能做加载数据操作
  3. 视图的创建,只是保存一份元数据,查询视图时才执行对应的子查询

view定义中若包含了ORDER BY/LIMIT语句,当查询视图时也进行 ORDER BY/LIMIT语句操作,view当中定义的优先级更高

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;

Hive 索引

建立了索引 后 需要rebuild (会启动mr)

目的:优化查询以及检索性能

创建索引:

create index t1_index on table psn2(name)
as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild
in table t1_index_table;

as:指定索引器;
in table:指定索引表,若不指定默认生成在default __psn2_ t1_index__表中  存放的索引表


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

查询索引

show index on psn2;

重建索引(建立索引之后必须重建索引才能生效)

创建索引信息

ALTER INDEX t1_index ON psn2 REBUILD;

删除索引

DROP INDEX IF EXISTS t1_index ON 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值