文章目录
【实验题目】电商用户行为实时分析系统
【实验描述】
电商平台中的用户行为频繁且较复杂,系统上线运行一段时间后,可以收集到大量的用户行为数据,进而利用大数据技术进行深入挖掘和分析,得到感兴趣的商业指标并增强对风险的控制。
对于电商用户行为的数据,电商用户行为数据多样,整体可以分为用户行为习惯数据和业务行为数据两大类。
用户的行为习惯数据包括了用户的登录方式、上线的时间点及时长、点击和浏览页面、页面停留时间以及页面跳转等等,我们可以从中进行流量统计和热门商品的统计,也可以深入挖掘用户的特征;这些数据往往可以从 web 服务器日志中直接读取到。
而业务行为数据就是用户在电商平台中针对每个业务(通常是某个具体商品)所作的操作,我们一般会在业务系统中相应的位置埋点,然后收集日志进行分析。业务行为数据又可以简单分为两类:一类是能够明显地表现出用户兴趣的行为,比如对商品的收藏、喜欢、评分和评价,我们可以从中对数据进行深入分析,得到用户画像,进而对用户给出个性化的推荐商品列表,这个过程往往会用到机器学习相关的算法;另一类则是常规的业务操作,但需要着重关注一些异常状况以做好风控,比如登录和订单支付。
该项目主要涉及到两个模块,实时统计分析模块和业务流程及风险控制模块,详细模块信息如下所示:
实时统计分析模块:
- 实时热门商品统计
- 实时热门页面流量统计
- 实时访问流量统计
- APP市场推广统计
- 页面广告点击量统计
业务流程及风险控制模块:
- 页面广告黑名单过滤
- 恶意登录监控
- 订单支付失效监控
该项目共八个功能点。在本次的项目当中,我们的技术栈为Flink+Zookeeper+Kafka+Flume+Superset+Mysql+Redis。在该项目中,我们将综合运用 flink 的各种 API,基于 EventTime 去处理基本的业务需求,并且灵活地使用底层的 processFunction,基于状态编程和 CEP 去处理更加复杂的情形。
【实验目的】
掌握Flink生态组件的综合应用,能够融合Flink与Hadoop相关技术,能够应用相关技术解决实际问题。
综合应用Hadoop、Flink、Kafka、Flume等组件,合理的进行程序设计,实现一个小型的大数据综合分析案例,培养学生独立自主的分析问题、解决问题以及编程能力。
【实验时间】
2022年3月11日
【实验环境】
操作系统:Windows 10;
虚拟机环境:VMware Workstation 16 Pro;
Linux系统:CentOS 7
开发工具:IntelliJ IDEA 2020.2.1 x64
JDK环境:JDK 1.8.0_301。
Flink: 1.10.1
Hadoop版本:3.2.2
Zookeeper版本:3.6.3
Flume版本:1.9.0
Kafka版本:2.12-2.6.0
Mysql版本:8.0.26
Redis版本:2.4.5
Superset版本:1.2.0
Python版本:3.7(安装Superset时,需指定python版本为3.7)
【实验内容】
实验第一部分统计手机流量模块主要有以下四个需求:统计手机的上行流量、下行流量、总流量功能等共四个功能。实验第二部分连续登录失败检测模块有一个功能。本实验的功能点结构图如下图所示:
由于数据的限制,本次实验不再继续沿用Hadoop综合应用和Spark综合应用的数据集以及代码,而是重新另找数据集以及根据新的业务来进行代码的编写与展示。
该电商用户行为分析系统的内容主要包括实时统计分析模块和业务流程及风险控制模块两大部分,这两个模块的实现均使用实时的处理技术。
其中第一模块实时统计分析模块的功能点如下:
1.实时热门商品统计
2.实时热门页面流量统计
3.实时访问流量统计
4.APP市场推广统计
5.页面广告点击量统计
第二模块业务流程及风险控制模块实现的功能点如下:
1.页面广告黑名单过滤
2.恶意登录监控
3.订单支付失效监控
由于时间限制,本次仅对第一模块的功能点实现添加了可视化大屏的展示,由于第二模块主要涉及到业务流程以及一些告警的显示,因此第二模块的展示将放在控制台当中进行。
本项目的功能点结构图如下图所示:
本次项目的技术架构如下所示:
【实验步骤】
本次实验的话采取逐个模块进行编写的方式,总体实现步骤如下图所示
- 创建Maven项目
- 实时热门商品统计功能实现
- 实时热门页面流量统计功能实现
- 实时访问流量统计功能实现
- APP市场推广统计功能实现
- 页面广告点击量统计功能实现
- 页面广告黑名单过滤功能实现
- 恶意登录监控功能实现
- 订单支付失效监控功能实现
- 安装superset并将上述模块数据与superset进行对接,制作可视化展示页面
接下来是详细的实验过程:
1. 创建Maven项目
1.1项目框架搭建
项目的框架为先建立一个maven项目,该项目中包含了多个模块,我们的每个功能点将在不同的模块当中进行分别实现,框架结构图如下图所示:
热门商品统计功能在HotItemsAnalysis模块当中实现。
实时热门页面流量统计功能在NetWorkFlowAnalysis模块当中实现
实时访问流量统计功能也在NetWorkFlowAnalysis模块当中实现
APP市场推广统计功能在MarketAnalysis模块当中实现
页面广告点击量统计功能和页面广告黑名单过滤功能也在MarketAnalysis模块当中实现。
恶意登录监控功能在LoginFailDetect模块当中实现
订单支付失效监控功能在OrderPayDetect模块当中实现
CommonUtil模块放置的是进行数据库连接的通用类
MockDataProduct模块放置的是用来产生向kafka发送模拟数据的相关类
1.2 声明项目中工具的版本信息
我们在本次实验中,需要用到的一些工具的版本信息如下所示:
1.3 添加项目依赖
下面是我们需要添加的一些依赖信息:
以及一些插件信息: