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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
日志服务 SLS,月写入数据量 50GB 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 的编写过程在企业中用的非常多一定要梳理清楚

相关文章
|
19天前
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
40 13
|
2月前
|
监控 前端开发 安全
如何开发一个网站:全面解析与实战指南
在数字化时代,网站是企业和个人展示形象、传播信息的关键平台。本文提供从规划、设计、开发、上线到后期维护的全方位网站开发指南,涵盖明确目标、分析用户、设定功能需求、设计风格、技术选型、测试部署及优化升级等内容,帮助你打造既美观又实用的网站。
117 4
|
2月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
61 1
|
3月前
|
监控 网络协议 应用服务中间件
深入解析:如何确定网站使用的端口号
【10月更文挑战第21天】 在网络通信中,端口号是识别特定服务的关键。一个IP地址可以有多个端口,每个端口可能运行着不同的服务。当我们在浏览器地址栏输入一个网址时,实际上是通过特定的端口与服务器进行通信。本文将探讨如何确定一个网站使用的端口号,以及端口号在网络通信中的作用。
256 4
|
3月前
|
存储 监控 安全
深入解析Sysmon日志:增强网络安全与威胁应对的关键一环
在不断演进的网络安全领域中,保持对威胁的及时了解至关重要。Sysmon日志在这方面发挥了至关重要的作用,通过提供有价值的见解,使组织能够加强其安全姿态。Windows在企业环境中是主导的操作系统,因此深入了解Windows事件日志、它们的独特特性和局限性,并通过Sysmon进行增强,变得至关重要。
|
3月前
|
数据采集 XML 前端开发
Jsoup在Java中:解析京东网站数据
Jsoup在Java中:解析京东网站数据
|
3月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
3月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
118 0
|
3月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
3月前
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
252 0

推荐镜像

更多