hive的表生成函数

hive的表生成函数

explode函数

explode(col) : 将hive中array、map结构拆分成多行

explode(ARRAY) : 将数组的每一个元素都生成一行

explode(AMP) : 将map的每一个K-V对都生成一行,k为一行,v为一行

准备数据

1	jx|zx|yx
2	wj|wz|yy
3	wx|wx|yx

建表

create table emp(
id int,
name array<string>
)
row format delimited fields terminated by '\t'
collection items terminated by '|';

加载数据

load data inpath '/data/data.txt' into table emp;

加载完数据就可以查询到数据了

select * from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6sFtAZO2-1676119661335)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230211202855563.png)]

使用explode进行查询

select explode(name) name from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vEJRUH49-1676119661337)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230211202930858.png)]

LATERAL VIEW

能够将一列数据拆分成多行,可以对拆分之后的数据进行聚合

hive (default)> select id, n from emp lateral view explode(name) tmp_name as n;
OK
id	n
1	jx
1	zx
1	yx
2	wj
2	wz
2	yy
3	wx
3	wx
3	yx

Reflect

reflet函数支持在sql中调用java自带的函数

准备数据

1	3
2	1
6	3

create table tmp1(col1 int,col2 int) row format delimited fields terminated by '\t';

load data inpath '/data/data.txt' into table tmp1;

调用函数

hive (default)> select reflect ("java.lang.Math", "max", col1, col2) from tmp1;
3
2
6
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

健鑫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值