摘要:本文主要介绍了大数据开发之大数据Hive:Hive的表生成函数,通过具体的内容向大家展现,希望对大家大数据开发的学习有所帮助。
本文主要介绍了大数据开发之大数据Hive:Hive的表生成函数,通过具体的内容向大家展现,希望对大家大数据开发的学习有所帮助。
Hive的表生成函数
一、explode函数
explode(col):将hive一列中复杂的array或者map结构拆分成多行。
explode(ARRAY) 数组的每个元素生成一行
explode(MAP) map中每个key-value对,生成一行,key为一列,value为一列
数据:
10 CLARK|KING|MILLER
20 SMITH|JONES|SCOTT|ADAMS|FORD
30 ALLEN|WARD|MARTIN|BLAKE|TURNER|JAMES
建表:
create table emp2(
deptno int,
names array
)
row format delimited fields terminated by '\t'
collection items terminated by '|';
插入数据
load data local inpath '/export/data/hivedatas/emp2.txt' into table emp2;
查询数据
select * from emp;
使用expload查询
select explode(names) as name from emp;
二、LATERAL VIEW侧视图
LATERAL VIEW
用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias
解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。
列转行
select deptno,name from emp2 lateral view explode(names) tmp_tb as name;
三、Reflect函数
reflect函数可以支持在sql中调用java中的自带函数
1、使用java.lang.Math当中的Max求两列中最大值
创建hive表
create table test_udf(col1 int,col2 int) row format delimited fields terminated by ',';
–准备数据 test_udf.txt
1,2
4,3
6,4
7,5
5,6
–加载数据
load data local inpath '/export/data/hivedatas/test_udf.txt' into table test_udf;
1
–使用java.lang.Math当中的Max求两列当中的最大值
select reflect("java.lang.Math","max",col1,col2) from test_udf;
我是小职,记得找我
✅ 解锁高薪工作
✅ 免费获取基础课程·答疑解惑·职业测评
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号