1、UDF、UDAF、UDTF简介
在Hive中,所有的运算符和用户定义函数,包括用户定义的和内置的,统称为UDF(User-Defined Functions)。如下图所示:
UDF官方文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
其中,用户自定义聚合函数和内置聚合函数统称为UDAF(User-Defined Aggregate Functions),用户自定义表生成函数和内置表生成函数统称为UDTF(User-Defined Table-Generating Functions)
本文将主要通过具体案例详细介绍Hive的内置表生成函数(UDTF)
2、Hive内置UDTF
Hive内置UDTF官方文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-Built-inTable-GeneratingFunctions%28UDTF%29
2.1、explode(array/map)
功能:列转行
示例:文章来源地址https://www.toymoban.com/news/detail-753192.html
select explode(array(1,2,3))
select explode(split('1,2,3', ','))
'''
col
1
2
3
'''
select explode(map(1,2,3,4))
'''
key value
1 2
3 4
'''
2.2、posexplode(array)
功能:列转行,第一列添加元素索引(从0开始)
示例:
select posexplode(array(1,2,3))
'''
pos val
0 1
1 2
2 3
'''
2.3、stack(n,v1,v2,…,vk)
功能:将k个数据平均转换成n行,即k/n列,k必须是n的整数倍,空值使用NULL文章来源:https://www.toymoban.com/news/detail-753192.html
示例:
-- 将9个元素按顺序分成3行3列
with user_log as (
select stack (<
到了这里,关于Hive内置表生成函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!