前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021年大数据Hive(六):Hive的表生成函数

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

作者头像
Lansonli
发布2021-10-11 15:40:16
1.4K0
发布2021-10-11 15:40:16
举报
文章被收录于专栏:Lansonli技术博客

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

建表:

代码语言:javascript
复制
create table emp2(
deptno int,
names array<string>
)
row format delimited fields terminated by '\t'
collection items terminated by '|';

插入数据

代码语言:javascript
复制
load data local inpath '/export/data/hivedatas/emp2.txt' into table emp2;

查询数据

代码语言:javascript
复制
select * from emp;
在这里插入图片描述
在这里插入图片描述

使用expload查询

代码语言:javascript
复制
select explode(names) as name from emp;
在这里插入图片描述
在这里插入图片描述

二、LATERAL VIEW侧视图

LATERAL VIEW 用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias 解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

列转行

代码语言:javascript
复制
select deptno,name from emp2 lateral view explode(names) tmp_tb as name;
在这里插入图片描述
在这里插入图片描述

三、Reflect函数

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

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

创建hive表

代码语言:javascript
复制
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

–加载数据

代码语言:javascript
复制
load data local inpath '/export/data/hivedatas/test_udf.txt'  into table test_udf;

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

代码语言:javascript
复制
select reflect("java.lang.Math","max",col1,col2) from test_udf;
  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢大数据系列文章会每天更新,停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hive的表生成函数
    • 一、explode函数
      • 二、LATERAL VIEW侧视图
        • 三、Reflect函数
          • 1、使用java.lang.Math当中的Max求两列中最大值
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档