Hive的表生成函数

Posted diuxie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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<string>
)
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 www.pizei.comudtf(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

–加载数据

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;

以上是关于Hive的表生成函数的主要内容,如果未能解决你的问题,请参考以下文章

Hive表生成函数explode讲解

hive 表造数据几百万条怎么快速生成

hive常用函数

Hive 常用函数汇总

HIVE 常见函数

Hive2.0函数大全