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

news2024/11/18 9:32:39

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

  • 一、项目需求
    • 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脚本编写

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信怎么恢复聊天记录?效果惊人的3个方法

微信作为我们日常生活中最常用的即时通讯工具之一&#xff0c;承载着我们与亲友之间的重要沟通记录。然而&#xff0c;不可避免地会遇到误删聊天记录的情况&#xff0c;可能是因为手误、设备问题或其他原因。 当我们发现重要的聊天记录不见了&#xff0c;往往会感到焦虑和困扰…

ValueError: Cannot load file containing pickled data when allow_pickle=False

问题描述 遇到报错&#xff1a;ValueError: Cannot load file containing pickled data when allow_pickleFalse 解决方案 经过查阅有人说是与numpy的版本有关&#xff0c;但是还是不要轻易改变环境中的版本&#xff0c;不一定哪个地方就会报错。这里放个解决方案&#xff1a;…

量化交易入门(二十二)MACD指标实现,能挣到钱吗?

学习了MACD指标以后&#xff0c;我们通过量化回测来验证一下&#xff0c;这个指标能否帮我们挣到钱。我们还是使用Backtrader框架&#xff0c;实现MACD的交易策略&#xff0c;然后用苹果股票历史数据完成这个示例。 示例代码如下&#xff1a; import backtrader as bt import…

server端

一、创建项目 expess server 1.1 安装nodemon npm i nodemon 1.2 设置连接数据库mongodb 安装mongoose npm i mongoose 在根目录新建config文件夹/db.config.js // 引入mongodb数据库操作模块 const mongoose require("mongoose") // 连接数据库mongoose.con…

【Git】日志功能

1. git日志显示 # 显示前3条日志 git log -3# 单行显示 git log --oneline# 图表日志 git log --graph# 显示更改摘要 git log --stat# 显示更改位置 git log --patch 或 git log -p# 查看指定文件的提交历史记录 git log {filename}例子1&#xff1a;单行显示 例子2&#xff…

自学编程的六种方法,你必须知道

随着互联网日趋迅猛&#xff0c;编程已经在我们生活当中无处不在了。众所周知&#xff0c;程序员的工资都很不错&#xff0c;于是越来越多的人&#xff0c;都想加入到编程的行业中来。那么如何加入到程序员的行业当中&#xff1f; PHP从入门到放弃&#xff0c;C语言从入门到放…

3款免费甘特图制作工具的比较和选择指南

GanntProject GanttProject https://www.ganttproject.biz/ 是一款项目管理和调度应用&#xff0c;适用于 Windows、macOS 和 Linux。它易于使用&#xff0c;无需任何设置&#xff0c;适用于个人用户和小型团队。该应用提供任务层次结构和依存关系、里程碑、基准行、Gantt 图表…

【深度学习】最强算法模型之:潜在狄利克雷分配(LDA)

潜在狄利克雷分配 1、引言2、潜在狄利克雷分配2.1 定义2.2 原理2.3 算法公式2.4 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 给我讲一讲LDA 小鱼&#xff1a;LDA&#xff1f; 你指的是&#xff1f; 小屌丝&#xff1a;就是算法模型的LDA啊&#xff0c; 你…

基于XGBoost和数据预处理的电动汽车车型预测

基于XGBoost和数据预处理的电动汽车车型预测 文章目录 基于XGBoost和数据预处理的电动汽车车型预测1、前言2、导入数据3、各县电动汽车采用情况条形图4、电动车类型饼图5、前5最欢迎的电动车制造商6、XGBoost模型6.1 字符串列的标识6.2 删除不相关的列6.3 编码分类变量6.4 电动…

【机器学习之---数学】统计学基础概念

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 统计学基础 1. 频率派 频率学派&#xff08;传统学派&#xff09;认为样本信息来自总体&#xff0c;通过对样本信息的研究可以合理地推断和估计总体信息…

探究 HTTPS 的工作过程

目录 1. HTTPS 协议原理 1.1. 为什么要有HTTPS协议 1.2. 如何理解安全 1.3. HTTPS 协议是什么 2. HTTPS 的前置概念 2.1. 什么是加密 && 解密 2.2. 为什么要加密 2.3. 常见的加密方式 2.3.1. 对称加密 2.3.2. 非对称加密 2.4. 数据摘要 && 数据指纹…

Linux系统------------MySQL备份与恢复

目录 一、数据备份的重要性 二、数据库备份的分类 2.1从物理与逻辑的角度&#xff0c;备份可分为物理备份与逻辑备份 2.2从数据库的备份策略角度&#xff1a;备份可分为完全备份、差异备份、 增量备份 2.2.1完全备份 2.2.2差异备份 2.2.3增量备份 2.2.4备份方式比较 三…

白酒:生产过程的能耗分析与节能减排措施

在当今的绿色环保时代&#xff0c;节能减排已经成为各行各业关注的焦点。作为传统的白酒生产企业&#xff0c;云仓酒庄深知环境保护的重要性&#xff0c;并积极采取措施降低生产过程中的能耗&#xff0c;为可持续发展贡献力量。 在豪迈白酒的生产过程中&#xff0c;能耗主要来自…

【剑指offr--C/C++】JZ23 链表中环的入口结点 与哈希表

一、哈希表&#xff08;unordered_set&#xff09;知识点 unordered_set是一种无序的数据集合容器&#xff0c;元素和键同时存在&#xff0c;元素没有按任何特定的顺序排序&#xff0c;而是根据它们的散列&#xff08;hash&#xff09;值组织成桶&#xff0c;以允许直接通过值…

不花一分钱,10分钟搭建自己的网站

不花一分钱,10分钟搭建自己的网站 文章目录 不花一分钱,10分钟搭建自己的网站效果展示第1步 账号注册与登录第2步 新建仓库第3步 新建文件夹及文件第4步 网站发布部署大功告成 效果展示 课程效果展示 进阶效果展示 第1步 账号注册与登录 点击这里 https://gitee.com/&…

韶音、南卡、Oladance开放式耳机值得买吗?多维度测评实力最强品牌

​近期&#xff0c;不少朋友向我咨询关于开放式耳机的选购建议&#xff0c;他们反映市面上的开放式耳机在音质和佩戴舒适度方面表现参差不齐。面对众多品牌&#xff0c;消费者往往感到无从选择。针对这一问题&#xff0c;我将对市面上热门的韶音、南卡和Oladance三款开放式耳机…

linux将未分配空间分配到指定挂载点

lsblk命令查看硬盘&#xff0c;空间有200G&#xff0c;子分区加起来才100个G&#xff0c;有100个G未使用 lsblk给硬盘分配盘符 fidisk /dev/vda n 回车 回车 w将所有未分配的空间分区&#xff0c;这里有100个GB 查看分配的分区 /dev/vda4 fidisk -lpvcreate /dev/vda4查看…

武汉星起航:亚马逊跨境电商市场蓬勃发展,竞争日趋激烈

近年来&#xff0c;跨境电商行业如日中天&#xff0c;成为国际贸易的新宠。作为全球电商的领头羊&#xff0c;亚马逊凭借其卓越的物流、支付和售后服务体系&#xff0c;稳坐跨境电商领域的头把交椅。然而&#xff0c;在激烈的市场竞争与不断变化的消费者需求面前&#xff0c;亚…

Deepin中定义 ll 文件查看命令

Deepin中定义 ll 文件查看命令 一、概述1. 在终端中使用2. 配置本用户使用 一、概述 在Ubuntu中习惯使用 ll 命令作为查看文件系统数据&#xff0c;在Deepin中无法使用此命令。我们可以用ls命令去组装一个ll命令。 1. 在终端中使用 我们如果只使用一次&#xff0c;我们可以用…

Halcon与C#联合开发——1.读取图片、图像二值化

在vs中引入halcon控件 修改目标平台为 x64 拖出三个控件 代码展示 using System; using System.Windows.Forms; //引用支持halcon的命名空间 using HalconDotNet;namespace _1.HalconDisplay {public partial class Form1 : Form {// HObject 是Halcon库中表示图像和其他图形…