网站流量日志分析—扩展—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实时生图绘板
相关文章
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
1704 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
321 2
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
155 1
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
1281 0
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
4683 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
532 9
|
11月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1083 54
下一篇
开通oss服务