当前位置: 首页 > news >正文

大数据开发(日志离线分析项目)

大数据开发(日志离线分析项目)

  • 一、项目需求
    • 1、使用jquery+echarts的方式调用程序后台提供的rest api接口,获取json数据,然后通过jquery+css的方式进行数据展示。工作流程如下:
    • 2、七大角度
      • 1、用户基本信息分析模块
      • 2、浏览器信息分析模块
      • 3、地域信息分析模块
      • 4、用户浏览深度分析模块
      • 5、外链数据分析模块
      • 6、订单分析模块
      • 7、事件分析模块
  • 二、系统架构
    • 1、数据流程设计
    • 2、如何确定集群规模?
    • 3、测试服务器规划
  • 三、JS SDK
    • 1、概述
    • 2、执行工作流
    • 3、数据参数说明
    • 4、事件分析
      • 4.1 概述
      • 4.2 launch事件
      • 4.3 pageview事件
      • 4.4 chargeRequest事件
      • 4.5 event事件
  • 四、JAVA SDK
    • 1、执行工作流
    • 2、程序后台事件分析
      • 2.1 chargesuccess事件
      • 2.2 chargerrefund事件
  • 五、数据来源设计
    • 1、项目搭建
    • 2、配置tomcat
    • 3、代码分析
      • 3.1 js代码分析
      • 3.2 java代码分析
  • 六、nginx和flume应用
    • 1、添加nginx服务与开机启动
    • 2、Nginx日志格式配置
    • 3、项目中flume的配置
  • 七、ETL
    • 1、解析思路
  • 八、新增用户数据处理
    • 1、数据库和表
    • 2、维度相关类
    • 3、Mapper和Reducer输出Value类
    • 4、添加写入MySQL表相关类
    • 5、Runner开发
    • 6、Mapper开发
    • 7、Reducer开发
  • 九、活跃用户数据处理
    • 1、ActiveUserRunner开发提示
    • 2、Mapper开发提示
    • 3、Reducer开发提示
  • 十、Sqoop
  • 十一、用户浏览深度分析
    • 1、hql编写
    • 2、Hive中创建表
    • 3、hql行转列
    • 4、完善hql
    • 5、编写UDF类
    • 6、Hive创建函数
    • 7、sqoop脚本编写

一、项目需求

1、使用jquery+echarts的方式调用程序后台提供的rest api接口,获取json数据,然后通过jquery+css的方式进行数据展示。工作流程如下:

在这里插入图片描述

2、七大角度

1、用户基本信息分析模块

1、用户分析
分析新增用户、活跃用户以及总用户的相关信息。
2、会员分析
分析新增会员、活跃会员以及总会员的相关信息。
3、会话分析
分析会话个数、会话长度和平均会话长度相关的信息。
4、Hourly分析
分析每天每小时的用户、会话个数以及会话长度的相关信息。

2、浏览器信息分析模块

1、用户分析
2、会员分析
3、会话分析
4、浏览器pv分析
pv:访问页面的数量pageview

3、地域信息分析模块

1、活跃访客地域分析
分析各个不同地域的活跃访客数量
2、跳出率分析
分析各个不同地域的跳出率情况。(没有进行二次浏览行为,直接退出网站)

4、用户浏览深度分析模块

用户在一次会话中访问页面的数量。pv/uv(uv:cookie中的uuid数量)

5、外链数据分析模块

1、外链偏好分析
分析各个外链带来的活跃访客数量
2、外链会话(跳出率)分析

6、订单分析模块

7、事件分析模块

二、系统架构

1、数据流程设计

在这里插入图片描述

2、如何确定集群规模?

1、考虑自己单台服务器的配置
2、其次要考虑的是每日的数据规模:每日活跃用户、用户平均每日数据量
3、副本策略:一般2~3个副本
4、扩容周期:半年不扩容
5、预留空间:一般20%~30%

3、测试服务器规划

在这里插入图片描述

三、JS SDK

1、概述

不采用ip来标识用户的唯一性,通过在cookie中填充一个uuid来标识用户的唯一性。
埋点:在页面(jsp或html)中植入js代码。

2、执行工作流

在这里插入图片描述

3、数据参数说明

在各个不同事件中收集不同的数据发送到nginx服务器。
在这里插入图片描述
在这里插入图片描述

4、事件分析

4.1 概述

用户基本信息:pageview事件+launch事件
浏览器信息分析:在用户基本信息分析的基础上添加浏览器这个维度信息,pageview事件
地域信息:通过nginx服务器来收集用户的ip地址来进行分析,pageview事件
外链数据分析、用户浏览深度分析:在pageview事件中添加访问页面的当前url和前一个页面的url,pageview事件
订单信息分析:chargeRequest
自定义事件分析:需要一个pc端发送一个新的事件数据,定义为event。还需要设置一个launch事件来记录新用户的访问。event事件+launch事件

4.2 launch事件

用户第一次访问网站的时候触发该事件
在这里插入图片描述

4.3 pageview事件

当用户访问页面/刷新页面的时候触发该事件
在这里插入图片描述

4.4 chargeRequest事件

用户下订单的时候触发该事件
在这里插入图片描述

在这里插入图片描述

4.5 event事件

当访客/用户触发业务定义的事件后,前端程序调用该方法。
在这里插入图片描述

在这里插入图片描述

四、JAVA SDK

发送支付成功/退款成功的信息给nginx服务器。

1、执行工作流

在这里插入图片描述

2、程序后台事件分析

发送订单支付成功的信息给nginx服务器。

2.1 chargesuccess事件

支付成功
在这里插入图片描述
在这里插入图片描述

2.2 chargerrefund事件

订单退款
在这里插入图片描述
在这里插入图片描述

五、数据来源设计

埋点的使用,js相关方法以及java的相关方法

1、项目搭建

2、配置tomcat

3、代码分析

3.1 js代码分析

3.2 java代码分析

1、订单支付成功事件
AnalyticsEngineSDK.onChargeSuccess(…)方法
触发订单支付成功事件,发送事件数据到Nginx服务器
param orderId 订单支付id
param memberId 订单支付会员id
如果发送数据成功(加入到发送队列中),那么返回true;否则返回false(参数异常&添加到发送队列失败)。
2、订单退款成功事件
触发订单退款事件,发送退款数据到服务器
param orderId 退款订单id
param memberId 退款会员id
如果发送数据成功,返回true。否则返回false。

六、nginx和flume应用

1、添加nginx服务与开机启动

2、Nginx日志格式配置

3、项目中flume的配置

项目当中如何收集Nginx产生的日志?
监控日志文件/opt/data/access.log,将采集到的日志存放到hdfs文件系统的/log/目录下,并以yyyyMMdd为子目录分别存放每天的数据。

七、ETL

1、解析思路

1、通过^A进行拆分,不足四部分的数据不符合要求,过滤掉。
2、?后面的内容按照 & 进行拆分
3、在按照=进行拆分
4、判断参数en的值如果不是6种事件类型的过滤掉。
5、192.168.20.1 换算成地域
6、1642391346.792 时间
7、浏览器相关信息提取处理

八、新增用户数据处理

1、数据库和表

2、维度相关类

1、维度类图
浏览器维度、时间维度、KPI维度、平台维度
通过以上四个维度的各种组合,计算它的新增用户指标
2、BaseDimension类
3、BrowserDimension类
唯一标识id、名称、版本
4、PlatformDimension类
id、platformName
5、KpiDimension类
id、kpiName
6、DateDimension类
id、year、season、month、week、day、type、calendar
7、StatsDimesion类
8、StatsCommonDimesion类
9、 StatsUserDimesion类
10、KpiType类

3、Mapper和Reducer输出Value类

1、BaseStatsValueWritable类
获取当前value对应的kpi值
2、TimeOutputValue类
Mapper类输出的Value对应类型的类
id、time
3、MapWritableValue类
Reducer输出要写入mysql的表中,那么就存在以下两个问题:
1.把数据写入到哪个表中?比如new_install_user->query-mapping.xml中找namenew_install_user插入sql语句
2.对应表中一行记录的数据内容

4、添加写入MySQL表相关类

5、Runner开发

Job流程:
1、从hbase的eventlog表中读取数据
2、Mapper中对数据列表进行纬度的组合
3、Reducer聚合操作
4、数据放到MySQL对应的表中
hbase表查询:
en,s_time,pl,u_ud,browser,browser_v,kpi
条件 lanuch en=e_l (条件)和 时间范围
注意:kpi 模块 new_install_user,browser_new_install_user
通过List来完成如下操作:
1、scan添加过滤器,startKey stopKey
2、指定en=e_l的查询条件
3、指定要获取的列名MultipleColumnPrefixFilter
4、指定表名

6、Mapper开发

四个纬度:时间、浏览器、平台、模块
组合四个纬度,向输出外键值对信息。
维度组合有多少种?
各个维度的种类相乘得到结果
修改EventLogConstants类,添加两个常量:new_install_user、browser_new_install_user

7、Reducer开发

由于统计的是用户的数量,需要对log进行uuid的过滤,因为同一个人有可能点击了多次。

九、活跃用户数据处理

只要在指定的日期中出现过一次PageView的用户便被称为活跃用户。
查询哪些列?
en,s_time,browser_name,browser_version,platform,uuid
查询的过滤条件?
事件类型:en=e_pv
指定日期:>=yyyy-MM-dd 00:00:0 并且 < yyyy-MM-dd+1
00:00:00

1、ActiveUserRunner开发提示

1、创建日志记录对象
2、声明配置文件对象
3、设置Reducer相关参数、设置OutputFormat类、提交作业
4、处理日期参数
从传入的参数中获取日期,如果日期不合法或没有,则使用当前系统时间的昨天,将日期添加配置文件对象,设置相关参数,加载三个配置文件,配置文件处理

2、Mapper开发提示

声明并实例化输出的key和value对象
声明并实例化Kpi维度对象
声明日期维度对象
声明平台维度集合对象
声明浏览器维度集合对象
从value获取服务器时间
从value获取用户id
从value获取平台
从value获取浏览器名称
从value获取浏览器版本
构建单一维度对象或集合对象 日期、平台、浏览器
构建组合维度对象
循环遍历输出

3、Reducer开发提示

声明并实例化输出的value对象
去重,定义Set集合
清空集合,排除上一组数据的干扰
遍历values,将获取出的uuid添加到Set集合对象中
声明并实例MapWritable对象 mapw
将获取用户的数量添加到mapw中
并将mapw封装到Reduce输出的value对象中
kpi维度处理

十、Sqoop

将关系数据库(oracle、mysql、sqlserver等)数据与hadoop、hive、hbase等数据进行转换的工具。同类产品DataX(阿里顶级数据交换工具)
MR中通过InputFormat和OutputFormat配置MR的输入和输出

十一、用户浏览深度分析

通过hive和hbase的整合,编写hql分析语句,将分析后的结果
放入到hive的结果表中,然后通过sqoop导出到mysql的结果表中。

1、hql编写

2、Hive中创建表

3、hql行转列

4、完善hql

5、编写UDF类

6、Hive创建函数

7、sqoop脚本编写

相关文章:

大数据开发(日志离线分析项目)

大数据开发&#xff08;日志离线分析项目&#xff09; 一、项目需求1、使用jqueryecharts的方式调用程序后台提供的rest api接口&#xff0c;获取json数据&#xff0c;然后通过jquerycss的方式进行数据展示。工作流程如下&#xff1a;2、七大角度1、用户基本信息分析模块2、浏览…...

PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived

PostgreSQL从小白到专家&#xff0c;是从入门逐渐能力提升的一个系列教程&#xff0c;内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容&#xff0c;希望对热爱PG、学习PG的同学们有帮助&#xff0c;欢迎持续关注CUUG PG技术大讲堂。 第48讲&#…...

【若依 SpringBoot 前后端分离版】修改加密传输后密码错误的解决方法(附排错过程)

目录 排错过程 报错信息 SysLoginController SysLoginService&#xff08;问题核心&#xff09; 太长不看版&#xff1a;解决方法 文章传送门&#xff1a;若依(RuoYi)SpringBoot框架密码加密传输(前后分离板)_若依密码加密方式-CSDN博客文章浏览阅读1.5w次&#xff0c;点赞…...

发送请求- header配置

请求头里是客户端的要求&#xff0c;把你的诉求告诉服务端&#xff0c;服务端按照你的要求返回数据 &#xff0c; 请求header需要严格全配置&#xff0c;把请求header全部传入&#xff0c;不能频繁访问&#xff0c;让后端知道它是正常请求 一般只配置User-Agent和Content Typ…...

C语言重难知识点

C语言重难知识点 if(a=1) 为真函数指针的调用(int)2.9 = 2逗号运算符,最右边表达式值作为整个逗号表达式的值。文件操作if(a=1) 为真 int a=0,b=0,c=0; if(a...

jMeter学习

一. JMeter介绍 1. 什么是JMeter&#xff1f; Apache JMeter™ 应用程序是开源软件&#xff0c;一个 100% 纯 Java 应用程序&#xff0c;旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的&#xff0c;但后来扩展到其他测试功能。 2. JMeter能做啥&#x…...

Nodejs运行vue项目时,报错:Error: error:0308010C:digital envelope routines::unsupported

前端项目使用( npm run dev ) 运行vue项目时&#xff0c;出现错误&#xff1a;Error: error:0308010C:digital envelope routines::unsupported 经过探索&#xff0c;发现问题所在&#xff0c;主要是nodeJs V17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制&#…...

华为汽车图谱

极狐 极狐&#xff08;ARCFOX&#xff09;是由北汽、华为、戴姆勒、麦格纳等联合打造。总部位于北京蓝谷。 问界 华为与赛力斯&#xff08;东风小康&#xff09;合作的成果。 阿维塔 阿维塔&#xff08;AVATR&#xff09;是由长安汽车、华为、宁德时代三方联合打造。公司总部位…...

鸿蒙操作系统-初识

HarmonyOS-初识 简述安装配置hello world1.创建项目2.目录解释3.构建页面4.真机运行 应用程序包共享包HARHSP 快速修复包 官方文档请参考&#xff1a;HarmonyOS 简述 1.定义&#xff1a;HarmonyOS是分布式操作系统&#xff0c;它旨在为不同类型的智能设备提供统一的操作系统&a…...

【ZZULIOJ】1003: 两个整数的四则运算(Java)

题目描述 输入两个整数num1和num2&#xff0c;请你设计一个程序&#xff0c;计算并输出它们的和、差、积、整数商及余数。 输入 输入只有两个正整数num1、num2。 输出 输出占一行&#xff0c;包括两个数的和、差、积、商及余数&#xff0c;数据之间用一个空格隔开。 样例…...

聊聊芯片原厂

芯片原厂是芯片的生产商,他们制造和设计芯片,并拥有产品的所有权原厂这个词是为了区分芯片代理商(厂)而创造的。 每一家芯片制造商都会通过自己忠诚的芯片代理商(厂)来销售自己的芯片,代理商(厂)也会打着芯片制造商的旗号来销售芯片,因此有时候为了强调自己的正统地…...

百人一岗,Android开发者的困境。。。。。

前言 在当前的Android开发领域&#xff0c;竞争的激烈程度已经达到了前所未有的水平&#xff0c;几乎到了100个开发者竞争1个岗位的地步。 这种“内卷”现象的背后&#xff0c;是技术的快速发展和市场对Android开发者技能要求的不断提升。随着移动应用的普及和多样化&#xf…...

若依分离版 —引入echart连接Springboot后端

1. vue引入echart &#xff08;1&#xff09;首先安装ECharts库。可以通过npm npm install echarts --save &#xff08;2&#xff09;在vue页面中添加一个容器元素来显示图表 <el-card class"mt20"><div id"ha" ref"main"><…...

Halcon深度学习项目实战

Halcon在机器视觉中的价值主要体现在提供高效、可扩展、灵活的机器视觉解决方案&#xff0c;帮助用户解决各种复杂的机器视觉问题&#xff0c;提高生产效率和产品质量。 缩短产品上市时间 Halcon的灵活架构使其能够快速开发出任何类型的机器视觉应用。其全球通用的集成开发环…...

子类中的方法去调用父类中的方法有几种形式?原生django如何向响应头写入数据

1 子类中的方法去调用父类中的方法有几种形式 2 原生django如何向响应头写入数据 1 子类中的方法去调用父类中的方法有几种形式&#xff1f; class Animal:def eat(self):print(self.name, 在吃饭)class Dog(Animal):def __init__(self, name):self.name namedef test(self):#…...

数据安全治理框架构建

一、引言 在数字化时代&#xff0c;数据已成为企业和社会发展的重要驱动力。然而&#xff0c;随着数据量的激增和数据应用场景的扩展&#xff0c;数据安全风险也日益凸显。数据安全治理作为确保数据安全、合规使用的关键手段&#xff0c;受到了广泛的关注。本文旨在探讨数据安…...

深度学习十大算法之图神经网络(GNN)

一、图神经网络的基础 图的基本概念 图是数学中的一个基本概念&#xff0c;用于表示事物间复杂的关系。在图论中&#xff0c;图通常被定义为一组节点&#xff08;或称为顶点&#xff09;以及连接这些节点的边。每个边可以有方向&#xff0c;称为有向边&#xff0c;或者没有方向…...

【工具类】git log 常用别名,git log 干活,git log常用参数

git log 常用参数及 .gitconfig 配置 git log 常用参数及 .gitconfig 配置 干货&#xff0c;执行下边命令&#xff0c;添加别名git log 参数参考资料 干货&#xff0c;执行下边命令&#xff0c;添加别名 注意&#xff0c;需要将 knowledgebao 修改为自己的名字&#xff0c;…...

[linux] AttributeError: module ‘transformer_engine‘ has no attribute ‘pytorch‘

[BUG] AttributeError: module transformer_engine has no attribute pytorch Issue #696 NVIDIA/Megatron-LM GitHub 其中这个答案并没有解决我的问题&#xff1a; import flash_attn_2_cuda as flash_attn_cuda Traceback (most recent call last): File "<stdi…...

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗&#xff1f;为什么 原因&#xff1a;当使用const声明一个对象或数组时&#xff0c;实际上是保证了对象或数组的引用不会被修改&#xff0c;但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…...

前端开发者必看:5个提升AI提示词效果的实战技巧(附代码示例)

前端开发者必看&#xff1a;5个提升AI提示词效果的实战技巧&#xff08;附代码示例&#xff09; 当ChatGPT帮你生成React组件却总跑偏&#xff0c;当Copilot给出的代码建议总差那么点意思——作为前端开发者&#xff0c;你可能已经意识到&#xff1a;AI工具的表现力&#xff0c…...

快速上手Qwen3-4B:无需配置,GPU自适应优化的文本对话服务

快速上手Qwen3-4B&#xff1a;无需配置&#xff0c;GPU自适应优化的文本对话服务 想体验一个开箱即用、回答流畅、还能帮你写代码的AI助手吗&#xff1f;今天要介绍的Qwen3-4B Instruct-2507镜像&#xff0c;就是这样一个“傻瓜式”的纯文本对话服务。它基于阿里通义千问的官方…...

生成式 AI 赋能下钓鱼攻击的技术异化与防御体系构建

摘要 生成式人工智能在文本创作、语义理解与内容生成领域的快速落地&#xff0c;在提升生产效率的同时&#xff0c;也被不法分子用于网络钓鱼攻击的智能化升级。路透社与哈佛大学联合测试显示&#xff0c;主流大语言模型在特定提示词绕过机制下可生成高仿真钓鱼邮件&#xff0c…...

文墨共鸣大模型长期记忆(LSTM)优化对话体验:实现多轮深度交流

文墨共鸣大模型长期记忆&#xff08;LSTM&#xff09;优化对话体验&#xff1a;实现多轮深度交流 你有没有遇到过这样的情况&#xff1a;和一个智能助手聊天&#xff0c;聊到第三四轮的时候&#xff0c;它好像就忘了你最开始说了什么&#xff0c;回答开始跑偏&#xff0c;或者…...

SUPER COLORIZER一键部署指南:基于Ubuntu 20.04的完整环境配置教程

SUPER COLORIZER一键部署指南&#xff1a;基于Ubuntu 20.04的完整环境配置教程 你是不是也遇到过一些珍贵的老照片&#xff0c;因为年代久远而褪色&#xff0c;想恢复它原本的色彩却无从下手&#xff1f;或者&#xff0c;你有一些黑白的设计稿&#xff0c;想快速预览上色后的效…...

OpenClaw二次开发指南:修改Qwen3-VL:30B的飞书交互协议

OpenClaw二次开发指南&#xff1a;修改Qwen3-VL:30B的飞书交互协议 1. 为什么需要定制飞书交互协议 去年11月第一次尝试用OpenClaw对接飞书时&#xff0c;我遇到了一个典型问题&#xff1a;标准协议下发送的Markdown消息在Qwen3-VL:30B多轮对话中频繁出现格式错乱。这个30B参…...

智能车小白也能懂的舵机PD控制:从电感差比和到方向控制,保姆级避坑指南

智能车方向控制入门&#xff1a;用PD算法驯服你的舵机 第一次看到智能车在赛道上流畅过弯时&#xff0c;很多人都会好奇——这辆小车是如何感知赛道边界并精准控制方向的&#xff1f;作为电磁组智能车的核心部件&#xff0c;舵机就像车辆的"方向盘"&#xff0c;而PD控…...

OpenClaw技能组合拳:GLM-4.7-Flash完成跨平台内容同步

OpenClaw技能组合拳&#xff1a;GLM-4.7-Flash完成跨平台内容同步 1. 为什么需要跨平台内容同步 上周我遇到一个典型的内容创作者困境&#xff1a;在知乎看到一篇优质技术文章&#xff0c;想把它保存到Notion知识库&#xff0c;同时转换成适合公众号发布的格式。传统做法需要…...

企业如何防御LockBit 3.0?从IOC到实战检测规则编写指南

企业级防御实战&#xff1a;LockBit 3.0勒索病毒全维度对抗指南 1. 勒索病毒威胁态势与企业防御挑战 2023年全球网络安全报告显示&#xff0c;勒索软件攻击同比增长47%&#xff0c;其中LockBit系列占比高达28%。不同于传统恶意软件&#xff0c;LockBit 3.0采用模块化设计&#…...

Jenkins与GitHub集成指南:从凭据配置到自动化构建的全流程

Jenkins与GitHub深度集成实战&#xff1a;构建企业级自动化流水线 在DevOps实践中&#xff0c;持续集成与持续交付(CI/CD)已成为现代软件开发的核心环节。Jenkins作为最流行的开源自动化服务器&#xff0c;与GitHub的深度集成能够显著提升团队协作效率。本文将带您从零开始构建…...