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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志分析—扩展—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 当中众多函数的具体划分根据输入输出的多少。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
913 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
11月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
9月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
930 0
|
11月前
|
监控 Serverless 开发者
函数计算发布功能问题之查看函数的调用日志的问题如何解决
函数计算发布功能问题之查看函数的调用日志的问题如何解决
|
11月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
132 0
|
运维 Ubuntu Serverless
函数计算产品使用问题之函数没有产生任何日志输出,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
运维 安全 Serverless
函数计算产品使用问题之登陆函数实例之后如何查看函数的日志
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
632 0
|
8月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
2443 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
7月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
197 9

热门文章

最新文章