网站流量日志分析--统计分析--多维统计分析--终端维度--自定义 UDF 解析 UA|学习笔记

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 快速学习网站流量日志分析--统计分析--多维统计分析--终端维度--自定义 UDF 解析 UA

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第四阶段) 网站流量日志分析--统计分析--多维统计分析--终端维度--自定义 UDF 解析 UA】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/696/detail/12226


网站流量日志分析--统计分析--多维统计分析--终端维度--自定义 UDF 解析 UA


1、如何开发 hve 的自定义函数udf 实现对 ua 的解析需要使用第三方的库并且需要编写 hive java 代码

2、打开开发环境编译器 IntelliJ IDEA,在里面创建标准的工程开发hive自定义函数udf需要 hive 的执行包hadoop 包此外因为涉及到解析涉及到 ua 第三方 的java包需要导入 bitwalker 公司的 USerAgentutils 开源免费的工具类

3、创建工程选择 new project

image.png

选择 maven 模块点击 next

image.png

groupid 是公司组织域名 cn.itcast.bigdata,框架名 example-udf,版本号 version 是1.1。

工程名与框架名保持一致 example-udf。

点击 finish提示目录不存在是否需要创建点击 ok

image.png

4、引入依赖

<dependencies>

<dependency>

<qroupIdsorg. apache .hive</groupId>

<artifactId>hive-exec</artifactId>

version>1.2.1</versi on>

</dependency>

<dependency>

<gr oupId>org. apache .hadoop</groupId>

<artifactId>hadoop-common</artifactId>

<version>2.7.4</version>

</dependency>

<dependency>

<groupId>eu .bitwalker </groupId>

<artifactId>userAgentuti1s </artifactId>

<version>1.21</version>

</dependency>

</dependencies>

可以 把 jar 包联网下载过来做相关的验证工作有了依赖后把插件导入进来需要 jar 包,maven- shade- plugin 插件比较好用把 build 模块复制进来

<build>

<plugins>

<plugin>

<groupId>org . apache . maven . plugins</groupId>

<artifactId> maven- shade -plugin</artifactId>

<version>2.2</version>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>shade</goal>

</goals>

<configuration>

<filters>

<filter>

<artifact>*:*</artifact>

<excludes>

<exclude>META- INF/* .SF</exclude>

<exclude>META- INF/* .DSA</exclude>

<exclude>META- INF/* . RSA</exclude>

</excludes>

</filter>

</filters>

</ configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

可以保证通过 maven 插件打包 jar 包整个 udf 的编写就是集成一个类写里面的方法。

5、创建一个 package,cn.itcast.hive.udf

image.png

创建 class,UAParseUDF。

这个核心中当把第三方的 jar 导入之后就很简单只要传入标准的 ua 字 符串就像数据中的第三行

image.png

就可以构建 useragent 的实例使用的对象就是第三方 jar 包提供的对象基于它构建后里面就非常方便的调用各种api相关的数据信息比如调用getoperatingSystem 获得操作系统,getBrowser 获得浏览器版本,, getBrowserVersion 获得浏览器版本号返回就可以做解析非常标准的 udf 函数标准的普通函数实现一进一出

public string evaluate(final string userAgent){

//hive 自定义函数实现对 ua 的解析

StringBûilder builder = new StringBuilder() ;

//todo 利用第三方 ar 包构建一个 UserAgent 对象基于该对象实现 ua 的解析解析不需要操作直接 api 就可以完成

UserAgentua = new UserAgent (userAgent) ;

builder .append(ua. getoper atingSystem()+"t"+ua. getBrowser ()+"t"+ua. getBrowserVersion());

return

(builder . toString());

}

6、选择 Maven Projectslifecyclepackage 打包

image.png

这时就会把 jar 包打到工程目录下因为涉及到签名冲突依赖所以打包的长一些需要把依赖的 jar 包也导入进来打包完显示 build success这时也弹出新的 target 目录在目录下有两个jar包一个是 example-udf-1.1.jar 工程 jar 包另一个是 original- example -udf-1.1.jar区别很明显一个是把所有以来的 jar 包导入进去一个是只把自己写的 jar 导入进来选择第一个 example-udf-1.1.jarjar 包的名字是框架的名字加版本

image.png

把 jar 上传到 hive 服务器中做一个自定义函数的注册拖拽上传 jar 包添加自定义函数需要通过命令把 jar 包添加到 hive 环境变量中进行 agent 注册临时函数就可以使用

7、第一个叫导入 hive 的环境变量中用 add jar 命令在 root 路径下 example-udf-1.1.jar注意要删除空格否则会报错在服务器日志中显示出来添加到成功的 jar 包中

image.png

8、注册临时函数

使用:打成 jar 包,hive 中 add jar xx.jar ;

create temporary function ua_parse as ‘cn. itcast.hive.udf .TestUA' ;自定义函数的名字jar 组类的全路径

select ua_ parse(ua) from table_ name limit 3;

打开编辑器,Copy Peference。全路径拷贝下来替换到 cn. itcast. hive.udf. TestUA

image.png

复制注册create temporary function ua_ parse as 'cn. itcast.hive . udf .UAParseUDF' ;

在 hive 中执行注册成功使用自定义函数 ua_parse 对字段进行相关的解析pageviews 中有 useragent非常标准针对 ods_click

_pageviews.http_user agent 表进行相关的操作演示是否能解析成功

字段叫 ods_ click_ pageviews因为返回的字段比较多所以限制返回三条记录解析 http_user agent 字段执行 sql 语句 select ua_parse(http_user_agent) from ods_click_ pageviewslimit 3;

如果不解析返回会如何把解析函数去掉直接返回字段可以看到返回的是一长串字符串

image.png

执行解析可以看到出现了相关信息windows 平台谷歌平台ie 浏览器相关的版本如果没有显示NULL如果做这样的解析处理再统计来自于 windows 平台火狐浏览器有多少个根据分组统计即可这就是按照终端维度分析的好处

image.png

重点在如何使用第三方的 jar 包解析 ua特别注意 hive 自定义函数 udf 的编写过程在企业中用的非常多一定要梳理清楚

相关文章
|
10天前
|
监控 Java API
【Spring Boot】深入解密Spring Boot日志:最佳实践与策略解析
【Spring Boot】深入解密Spring Boot日志:最佳实践与策略解析
22 1
|
1天前
|
SQL DataWorks Oracle
DataWorks产品使用合集之datax解析oracle增量log日志该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
4 0
|
6天前
|
SQL Java 数据库连接
Mybatis日志SQL解析
Mybatis日志SQL解析
9 0
|
2月前
|
域名解析 缓存 监控
【域名解析 DNS 专栏】DNS 查询日志分析:洞察网络行为与优化建议
【5月更文挑战第28天】DNS查询日志分析对于理解和优化网络行为至关重要。通过日志,可洞察用户访问偏好、流量分布,进而进行缓存优化、负载均衡和安全检测。简单Python代码示例展示了如何读取和分析日志。根据分析结果,可针对性设置优化策略,提升网络性能、稳定性和安全性。不断探索新的分析方法,充分挖掘DNS查询日志的价值,以驱动网络持续优化。
|
12天前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
|
20天前
|
存储 SQL NoSQL
ClickHouse(16)ClickHouse日志表引擎Log详细解析
ClickHouse的Log引擎系列适用于小数据量(&lt;1M行)的表,包括StripeLog、Log和TinyLog。这些引擎将数据存储在磁盘,追加写入,不支持更新和索引,写入非原子可能导致数据损坏。Log和StripeLog支持并发访问和并行读取,Log按列存储,StripeLog将所有数据存于一个文件。TinyLog是最简单的,不支持并行读取和并发访问,每列存储在单独文件中。适用于一次性写入、多次读取的场景。
33 0
|
2月前
|
XML Java 数据库
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
【后台开发】TinyWebser学习笔记(3)HTTP连接与解析
27 4
|
2月前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
19 1
|
10天前
|
机器学习/深度学习 缓存 算法
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
|
12天前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
23 3

推荐镜像

更多