2021年大数据Hive(六):Hive的表生成函数

全网最详细的Hive文章系列,强烈建议收藏加关注!

后面更新文章都会列出历史文章目录,帮助大家回顾知识重点。

系列历史文章

2021年大数据Hive(十二):Hive综合案例!!!​​​​​​​
2021年大数据Hive(十一):Hive调优
2021年大数据Hive(十):Hive的数据存储格式
2021年大数据Hive(九):Hive的数据压缩​​​​​​​
2021年大数据Hive(八):Hive自定义函数
2021年大数据Hive(七):Hive的开窗函数
2021年大数据Hive(六):Hive的表生成函数

2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)
2021年大数据Hive(四):Hive查询语法
2021年大数据Hive(三):手把手教你如何吃透Hive数据库和表操作(学会秒变数仓大佬)
2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用
2021年大数据Hive(一):Hive基本概念

前言

2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习。
有对大数据感兴趣的可以关注微信公众号:三帮大数据

在这里插入图片描述

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<string>
)
row format delimited fields terminated by '\t'
collection items terminated by '|';

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

插入数据

load data local inpath '/export/data/hivedatas/emp2.txt' into table emp2;

   
  • 1

查询数据

select * from emp;

   
  • 1

在这里插入图片描述

使用expload查询

select explode(names) as name from emp;

   
  • 1

在这里插入图片描述

二、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;

   
  • 1

在这里插入图片描述

三、Reflect函数

reflect函数可以支持在sql中调用java中的自带函数

1、使用java.lang.Math当中的Max求两列中最大值

创建hive表

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

   
  • 1

–准备数据 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;

   
  • 1
  • 📢博客主页:https://lansonli.blog.youkuaiyun.com
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 优快云博客🙉
  • 📢大数据系列文章会每天更新,停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值