网站流量日志分析—扩展—hive 函数分类(udf、 udtf 、vdaf)|学习笔记

简介: 快速学习网站流量日志分析—扩展—hive 函数分类(udf、 udtf 、vdaf)

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第三阶段) 网站流量日志分析—扩展—hive 函数分类(udf、 udtf 、vdaf)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/695/detail/12204


网站流量日志分析—扩展—hive 函数分类(udf、 udtf 、vdaf)


作为一个面向分析的数据仓库,hive 除了支持它内置的函数之外还开放了接口让用户自定函数。整体来看可以根据输出的行数分为三个类别 udf、 udtf 、udaf ,接下来看这三种类别函数有什么区别。

udf 通常把函数成为普通函数,普通函数所描述的是实现一进一出,输入一行,输出一行,比如说 substring 截取。

为了更好理解,首先要明白在 hive 函数,可以分为两大块,第一个叫做内置的函数,包含原有的 hive substring 等,另外一个叫做用户自定义函数,这两位函数统称 hive 函数,可以分为三个类别,第一个叫做 udf ,普通函数,substring 函数很简单,穿入一个字符串,指定从 a 开始截取到 b ,就可以返回它一个具体的内容,比如 hello,这就是一个标准的一进一出。再比如,以刚才的参考参数来说还可以去自定义 udf 函数, hive 当中提供接口,当中输入一行,一个a ,一个 b ,返回当中最小的,这也是所谓的一进一出。称之为普通函数。

第二类函数叫做 udtf ,当中的 t 很重要,叫做 table generating 表深层函数,这类函数他所描述的是输入一行,输出多行,输出多行之后,这多行看起来像一个表,所以把它叫做表深层函数,接下来举个例子,这个字段不是普通的字段,它是一个 array 数主字段,里面放着北京、上海、南京、合肥,这个 location 在 hive 当中是复核类型叫做 array string,针对这样一个字段,如果这时候使用 hive 一个类字 udtf 函数叫做explode,它作用与它,变成什么样,这时候传一个函数叫做 explode,把 location 传给它,这个函数就是一个标准的 udtf 函数,把宿主当中的每一个元素变成一行,比如北京一行,上海一行,南京一行,最后一个是合肥。经过这样一个拆分,输入的是一行,输出是四行,一进多输,数据完成了表深层函数,这样就看起来后面数据非常像一个新的表结构,把它叫做表深层函数。这类函数是当下比较陌生的但是确实存在。

image.png

接下来第三类函数叫做 udaf ,这个 a 非常重要,叫做 aggregating 聚合,这类函数不管是内置的还是用户自定义的,它称之为聚合函数,就是通常所说的 sum 这类函数,这类函数通常可以对多行产生作用,就是输入多行输出一行,多进一出,sum 求和不管输入多少行,把多少行加起来求和,多进一出。

UDAF聚合函数,输入多行,输出一行,举例,有 name、allen、张三、李四以及王五,接下针对字段使用 count 聚合函数进行统计,统计结果是多少,count 完成之后有几条记录,是五条记录,输入了四条记录,返回了一条记录,这就是输入多行输出一行。

image.png

除了它内置的函数之外,讲义提供了如何自定义实现这些,准确来说这个 ud 叫做用户自定义,再次强调是自定义还是内置的实现,整体来看函数可以根据所有输出分为三个过程,普通的,一进一出叫做 udf, 要么是一进多出的叫做 udtf,表深层函数,要么称之为 udaf, 表聚合函数,这是针对 hive 当中众多函数的具体划分根据输入输出的多少。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
10月前
|
人工智能 JSON 安全
无需复杂正则:SLS 新脱敏函数让隐私保护更简单高效
SLS 推出 mask 脱敏函数,支持 keyword 和 buildin 模式,简化敏感数据识别与处理,提升脱敏效率与性能,适用于结构化及非结构化日志。
428 75
|
SQL HIVE
hive高频函数(一)
hive高频函数(一)
322 0
|
人工智能 运维 监控
一招高效解析 Access Log,轻松应对泼天流量
一招高效解析 Access Log,轻松应对泼天流量
310 0
一招高效解析 Access Log,轻松应对泼天流量
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
1901 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
386 4
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
583 2
|
SQL JavaScript 前端开发
Hive根据用户自定义函数、reflect函数和窗口分析函数
Hive根据用户自定义函数、reflect函数和窗口分析函数
379 6
|
监控 Serverless 开发者
函数计算发布功能问题之查看函数的调用日志的问题如何解决
函数计算发布功能问题之查看函数的调用日志的问题如何解决
275 1
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
SQL 分布式计算 HIVE
Hive Cli / HiveServer2 中使用 dayofweek 函数引发的BUG!
在Hive 3.1.2和Spark 3.0.2集群环境中,遇到`dayofweek`函数bug。当`create_date`为字符串类型时,`dayofweek`函数结果错位。修复方法是将`create_date`转换为`date`类型。在Spark SQL中,原始代码能正常运行,未出现此问题。因此建议在Hive中使用转换后的日期类型以避免错误。
497 4