【Hive】表生成(Table-Generating)函数

Hive内置表生成函数 在Hive中,所有的运算符和用户定义函数,包括用户定义的和内置的,统称为UDF(User-Defined Functions)。如下图所示:其中,用户自定义聚合函数和内置聚合函数统称为UDAF(User-Defined Aggregate Functions),用户自定义表生成函数和内置表生成函数统称为UDTF(User-Defined Table-Generating Functions)本文将主要通过具体案例详细介绍Hive的内置表生成函数(UDTF) 阅读详情

Hive版本: hive-1.1.0-cdh5.14.2

1. 列转行函数:explode

(1) 输入类型为array
语法:explode(ARRAY a)
返回值:T
描述:展开array,其中每个元素占一行

0: jdbc:hive2://node03:10000> select explode(array('A', 'B', 'C'));
+------+--+
| col  |
+------+--+
| A    |
| B    |
| C    |
+------+--+

(2) 输入类型为map
语法:explode(MAP<Tkey,Tvalue> m)
返回值: Tkey,Tvalue
描述:展开map,每个k-v对占一行

0: jdbc:hive2://node03:10000> select explode(map('A',10, 'B',20, 'C',30));
+------+--------+--+
| key  | value  |
+------+--------+--+
| A    | 10     |
| B    | 20     |
| C    | 30     |
+------+--------+--+
2. 列转行函数(增加行号):posexplode

语法: posexplode(ARRAY a)
返回值: int,T
描述: 展开array,并返回元素在array中的索引号

0: jdbc:hive2://node03:10000> select posexplode(array('A','B','C'));
+------+------+--+
| pos  | val  |
+------+------+--+
| 0    | A    |
| 1    | B    |
| 2    | C    |
+------+------+--+
3. 列转行函数:inline

语法:inline(ARRAY<STRUCTf1:T1,...,fn:Tn> a)
返回值: T1,…,Tn
描述: 展开嵌套struct的array,每个struct占一行

0: jdbc:hive2://node03:10000> select inline(array(struct('A',10,date '2015-01-01'), struct('B', 20, date '2016-02-02')));
+-------+-------+-------------+--+
| col1  | col2  |    col3     |
+-------+-------+-------------+--+
| A     | 10    | 2015-01-01  |
| B     | 20    | 2016-02-02  |
+-------+-------+-------------+--+
4. json解析函数: json_tuple

语法:json_tuple(string jsonStr,string k1,…,string kn)
返回值: string1,…,stringn
描述:解析jsonstr,并按指定的key返回结果。一次调用,可以返回多个键值,所以比get_json_object高效。

0: jdbc:hive2://node03:10000> set hivevar:jsonstr = '{"store":{"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], "bicycle":{"price":19.95,"color":"red"} },"email":"amy@only_for_json_udf_test.net","owner":"amy"}';

0: jdbc:hive2://node03:10000> select b.* from
. . . . . . . . . . . . . . > (select ${hivevar:jsonstr} as jsonstr) a
. . . . . . . . . . . . . . > lateral view json_tuple(a.jsonstr, 'email', 'owner') b as email, owner;
+---------------------------------+----------+--+
|             b.email             | b.owner  |
+---------------------------------+----------+--+
| amy@only_for_json_udf_test.net  | amy      |
+---------------------------------+----------+--+
5. url解析函数: parse_url_tuple

语法: parse_url_tuple(string urlStr,string p1,…,string pn)
返回值: string1,…,stringn
描述:解析urlstr,返回指定部分的值。不同于parse_url(),parse_url_tuple可以一次返回url多个部分的值。可以指定的有效值为: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:

0: jdbc:hive2://node03:10000> set hivevar:urlstr = 'https://www.tableName.com/path1/p.php?k1=v1&k2=v2#Ref1';

0: jdbc:hive2://node03:10000> select parse_url_tuple(${hivevar:urlstr},'HOST','QUERY:k1','REF');
+--------------------+-----+-------+--+
|         c0         | c1  |  c2   |
+--------------------+-----+-------+--+
| www.tableName.com  | v1  | Ref1  |
+--------------------+-----+-------+--+

0: jdbc:hive2://node03:10000> select b.* from
. . . . . . . . . . . . . . > (select ${hivevar:urlstr} as urlstr) a
. . . . . . . . . . . . . . > lateral view parse_url_tuple(a.urlstr,'HOST','QUERY:k1','REF') b as host,k1,ref;
+--------------------+-------+--------+--+
|       b.host       | b.k1  | b.ref  |
+--------------------+-------+--------+--+
| www.tableName.com  | v1    | Ref1   |
+--------------------+-------+--------+--+
Hive实现UDTF自定义函数 上一篇说到UTD函数,今天就说下UDTF自定义函数 UDTF和UDF不同点在于,UDTF是一对多,而UDF是一对一; UDTF(User-Defined Table-Generating Function):用户定义表生成函数,用来解决输入一行,输出多行的场景。 编写UDTF需要继承GenericUDTF类,然后重写initialize方法和process方法和close方法 方法用途: initialize方法主要是初始化返回的列和返回的列类型 process方法对输入的每一行进行操作, 他通过调用for 阅读详情

相关推荐

Hive表生成函数详细讲解

在Hive中,表生成函数(Table-Generating Functions, TGFs)允许用户从一行输入数据生成多行输出数据。这些函数特别有用于处理数组、映射和其他复杂数据类型。以下是EXPLODE()函数的详细讲解,包括案例和使用注意事项。需要注意的是,INLINE()函数在Hive中并不直接存在;相反,它可能是对其他数据库系统中类似功能的引用,或者是对EXPLODE()与结合使用时的概念性描述。

yang1015661763的博客 379

Hive函数(二)

Lateral View可以将UDTF应用到源表的每行数据,将每行数据转换为一行或多行,并将源表中每行的输出结果与该行连接起来,形成一个虚拟表。绝大多数的聚合函数都可以配合窗口使用,例如max(),min(),sum(),count(),avg()等。窗口函数,能为每行数据划分一个窗口,然后对窗口范围内的数据进行计算,最后将计算结果返回给该行数据。思考:如下基于值的窗口划分方式,是基于哪个字段的值划分的?该查询语句的返回结果是什么?窗口范围的定义分为两种类型,一种是基于行的,一种是基于值的。

赞的心路历程 789

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

解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。explode(MAP) map中每个key-value对,生成一行,key为一列,value为一列。explode(col):将hive一列中复杂的array或者map结构拆分成多行。reflect函数可以支持在sql中调用java中的自带函数。explode(ARRAY) 数组的每个元素生成一行。

Lansonli(蓝深李)的博客 2万+

[Hive]表生成函数(UDTF)使用指南

UDTF是User-Defined Table-Generating Functions 的缩写,即用户定义的表生成函数。UDTF 用于从原始表中的一行生成多行数据。典型的 UDTF有EXPLODE、posexplode等函数,它能将array或者map展开。 表生成函数和聚合函数是相反的,表生成函数可以把单列扩展到多列。表生成函数:可以理解为一个函数可以生成一个表。 1、explode函数-行转列 explode函数以array类型数据输入,然后对数组中的数据进行迭代,返回多行结果,一行一个数组元素值。

开嘴的板栗 7657

Hive学习之内置聚合函数

聚合函数 下表为Hive内置的聚合函数。 返回类型 函数名 描述 BIGINT count(*) count(expr) count(DISTINCT expr[, expr_.]) count(*) – 返回检索到的行的总数,包括含有NULL值的行。count(expr) – 返回expr表达式不是NUL

skyWalker_ONLY 3万+

hive元数据生成建表语句

可以从hive元数据生成建表语句的资源。包括表结构、分区等信息

HIVE中UDTF编写和使用

1. UDTF介绍 UDTF(User-Defined Table-Generating Functions)  用来解决 输入一行输出多行(On-to-many maping) 的需求。 2. 编写自己需要的UDTF 继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF。实现initialize, process,

spider的博客 953

保姆级教程:手把手教你为STM32F407和W25Q128制作Keil MDK的SPI Flash下载算法(FLM文件)

本文提供了一份详细的教程,指导开发者如何为STM32F407和W25Q128制作Keil MDK的SPI Flash下载算法(FLM文件)。从理解下载算法的核心机制到实现FlashPrg.c的核心操作,再到链接脚本与地址映射实战,手把手教你完成定制化SPI Flash下载算法的开发与优化。

weixin_28716769的博客 408

Hive内置函数

数学函数 下面表格中的函数为Hive的内置数学函数,大部分当参数为NULL时返回NULL。 返回类型 函数名 描述 bigint round(double a) 返回a经过四舍五入的BIGINT值 double round(doubl...

好学若饥,谦卑若愚 8230

Frigate进阶玩法:如何用MQTT和Python脚本扩展你的自定义目标检测算法

本文详细介绍了如何通过MQTT和Python脚本扩展Frigate的自定义目标检测算法,无需修改源码即可实现特殊场景(如工业设备异常、农业病虫害识别)的高效检测。文章涵盖Frigate配置、外部检测服务构建、高级集成技巧及性能优化实践,帮助开发者灵活扩展智能监控能力。

weixin_42662293的博客 350

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification

对比式视觉-语言预训练,也称为CLIP,通过大规模的图像-文本对来学习视觉表示,为zero-shot知识迁移展示了新的范式。它在下游任务上展现出令人瞩目的性能,实现了zeri-shot的知识迁移。为了进一步增强CLIP的适应能力,现有方法提出了微调可学习模块的方法,显著提高了少样本情况下的性能,但也引入了额外的训练时间和计算资源。在本文中,我们提出了一种适用于CLIP的无需训练的少样本分类方法,称为Tip-Adapter。

qq_43800752的博客 1163

Hive窗口函数、聚合函数和Table-Generating函数

以下资料来源于网络,我只是整理了下: hive聚合函数: 函数名:count(*)、count(expr)、count(DISTINCT expr[, expr_.]) 描述:返回检索到的行的总数,包括含有NULL值的行。count(expr) – 返回expr表达式不是NULL的行的数量count(DISTINCT expr[, expr]) – 返回expr是唯一的且非NULL的行的数量 函数名:sum(col)、sum(DISTINCT col) 描述:对组内某列求和(包含重复值)或者对组内某列求和(

action825的博客 579

新手学习Vivado XDMA (1) - 配置详细分析

PCIe 在 Vivado XDMA 中的配置分析。

qq_18553915的博客 9708

Hive创建UDTF函数

Hive创建UDTF函数 文章目录Hive创建UDTF函数参考: 这部分不知道建一个什么样的函数,就照着网上的来了,所以就不写其他东西了 package com.chinasofti.hive.udf; import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec...

xxydzyr的博客 425

Windows 10下Gpg4win 4.3.1安装与配置全攻略:从下载到邮件加密实战

本文详细介绍了在Windows 10系统下安装和配置Gpg4win 4.3.1的全过程,包括下载、验证、自定义安装以及密钥管理。特别重点讲解了如何通过Kleopatra证书管理器进行密钥创建和管理,以及在Outlook中实现邮件加密的实战操作,帮助用户全面提升数据安全防护能力。

weixin_29271263的博客 301

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2603

开发HIVE的UDTF自定义函数

[Author]: kwu -- UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求,开发HIVE的UDTF自定义函数具体步骤如下:

3010

[Python图像处理] 十.形态学之图像顶帽运算和黑帽运算

数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像顶帽运算和图像黑帽运算,基础性知识希望对您有所帮助。

杨秀璋的专栏 1万+

hive UDTF函数

之前说过HIVE,UDF(User-Defined-Function)函数的编写和使用,现在来看看UDTF的编写和使用。 1. UDTF介绍 UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求。 2. 编写自己需要的UDTF 继承org.apache.hadoop.hive.q...

weixin_33963594的博客 726

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

hive 内置函数

参考链接: Hive常用字符串函数                            Hive中复合数据结构简介以及一些函数的用法说明 数学函数 下面表格中的函数为Hive的内置数学函数,大部分当参数为NULL时返回NULL。 返回类型 函数名 描述 bigint  round(do

Hebe 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Hive学习笔记(八)—— 函数

文章目录7.1 系统内置函数7.2 自定义函数7.2.1 自定义 UDF 函数7.2.2 自定义 UDTF 函数 7.1 系统内置函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function upper; 3)详细显示自带的函数的用法 hive> desc function extended upper; 7.2 自定义函数 1)Hive 自带了一些函数,比如:max/min 等,但是数量有限,自己可以通过

weixin_45417821的博客 454

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Hive+UDTF简单示例

UDTF(User-Defined Table-Generating Functions)  用来解决 输入一行输出多行(On-to-many maping) 的需求。          我们来看一个简单的例子。          现在有一个名为studentScore.txt的文本,里面的内容如下:                         A       90

wangzhun0129的专栏 1443

hive2mysql的udf_hive使用UDF函数

UDF几个相关概念:UDF: one-to-one row mapping : upper substr【进来一行出去一行】UDAF: Aggregation Many-to-one row mapping 比如sum/min【进来多行出去一行】UDTF: Table-generating one-to-many 比如:lateral view explode()【一对多】编写UD...

weixin_39967120的博客 135

hive函数整理

Aggregate Return Type Name(Signature) Description BIGINT count(*), count(expr), count(DISTINCT expr[, expr…]) count(*) 统计总行数,包括含有NULL值的行 count(expr) 统计提供非NULL的expr表达式值的行数 count(DISTINCT expr[,...

qq_34897849的博客 338
上一篇: 【Hive】字符串函数
下一篇: 【Hive】hive表的文件存储格式
卜塔
博客等级 码龄10年 135粉丝 318原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值