Hive的视图和索引

目录

一、Hive Lateral View

1、基本介绍

2、Hive表行转列,列转行以及Hive Lateral View在列转行中的使用

二、Hive视图

1、Hive视图基本介绍

2、Hive视图特点

3、Hive视图的意义

4、Hive视图的创建和删除

5、视图的使用

6、查询所有的hive视图 

三、Hive索引

1、Hive索引的实现原理

2、创建索引

3、使用索引

4、删除索引


一、Hive Lateral View

1、基本介绍

Lateral View用于和UDTF函数(explode、split)结合来使用。 ​ 首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚拟表。主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题。 ​

语法: ​

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

2、Hive表行转列,列转行以及Hive Lateral View在列转行中的使用

  • 表1:cityInfo

cityname

regionname

上海

四川北路

上海

虹梅路

上海

音乐学院

上海

徐家汇

上海

陆家嘴

上海

古北

北京

东四

北京

复兴门

北京

新街口

北京

地安门

  • 表2:cityInfoSet

cityname

regionname

上海

四川北路,虹梅路,音乐学院,徐家汇,陆家嘴,古北

北京

地安门,复兴门,东四,新街口

表1和表2的结构如上所示。

现在需要在 hive 中使用 Hql 语句对表1和表2进行互相转化。

(1)行转列

使用的函数说明: 

concat_ws(string SEP,string array<String>):函数返回字符串连接后的结果,SEP表示各个字符串连接的分割符;

collect_set(col): 函数将col字段进行去重,并合并成一个数组。

表1=>表2 可以使用 hive 的内置函数 concat_ws() 和 collect_set()进行转换,执行hql如下所示:

select cityname,concat_ws(',',collect_set(regionname)) as address_set from cityInfo group by cityname;

(2)列转行

使用到的函数

函数split(String str,String pat) 将字符串按照pat分割;

函数explode(array) 将数组中的元素拆分为多行显示。

表2=>表1 可以使用 hive 的内置函数 l

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值