基于Spark的电商用户行为实时分析可视化系统(Flask-SocketIO)

2023-11-17

项目简介

该项目已上线蓝桥课程,有需要的可凭邀请码(UB5mdLbl)学习哦,有优惠!课程地址(https://www.lanqiao.cn/courses/2629)

由于做毕设之前学过大数据,但是一直没有做过一整套的实时数据分析系统,有点遗憾。所以毕业设计就自主选了这一套系统,算是对之前知识进行一次整合运行,也挑战一下自己。
该系统主要对用户行为日志(此项目使用的数据源是数据集,可以根据自己需求,在数据采集时监控网站用户数据存放目录或者用爬虫实时爬取数据的存放目录)进行实时分析可视化。

先放最终系统成果,才有耐心看下面的内容!!!
系统登录页
系统页面

一、业务需求分析

  1. 采集用户行为日志数据;
  2. 实时分析数据(例如实时总订单、男女购物比例、用户各类行为分析、每段时间内最受欢迎的商品品牌、各年龄段购物比例等);
  3. 实时数据结果存储(将需要的结果数据存储到目标数据库);
  4. 数据可视化(将实时分析出的结果数据进行数据可视化);

二、系统流程及架构

登录系统后,通过日志采集模块来采集目标日志数据,将采集到的数据发送给日志传输模块,数据存放于kafka对应的topic中;数据处理模块创建与kafka的连接,消费对应topic中的数据,对数据进行预处理之后再进行处理分析,处理所得的结果数据存放进对应各topic中,以便于数据可视化,同时也将结果数据存入Redis数据库,便于后期其他功能分析使用。最后通过可视化模块,后台使用Flask作为Web框架,前端使用H5+Echarts,将结果数据进行可视化。系统流程图如图所示:
系统流程图
系统相关技术和组件:
Hadoop、Spark、Flume、Kafka、Zookeeper、Flask、SocketIO、Echarts、Scala、Python。项目架构如图所示:
项目架构图

三、系统技术版本以及相关部署配置

此项目由于计算机硬件配置较低,所以采用Hadoop伪分布式集群(部署在虚拟机的linux系统上用于存放源数据和程序检查点)和单机Spark集群(部署在本地windows上)
1.Hadoop2.9.2
伪分布式搭建参考(此项目) https://blog.csdn.net/xujingran/article/details/83898140
全分布式搭建参考 https://blog.csdn.net/u011254180/article/details/77922331
2.Flume1.9.0
搭建参考 https://blog.csdn.net/caodaoxi/article/details/8885645
Flume作为kafka的sink的配置文件:
在这里插入图片描述
3.Kafka2.4.0
伪分布式搭建参考(此) https://blog.csdn.net/weixin_42207486/article/details/80635246
全分布式搭建参考 https://blog.csdn.net/qq_39211575/article/details/103677016
5.Spark2.4.4
Windows单机搭建参考(此) https://blog.csdn.net/Python_Big_love/article/details/81878142
6.Zookeeper3.5.6
伪分布式搭建参考(此项目)https://blog.csdn.net/MISSRIVEN/article/details/81394595
全分布式搭建参考 https://blog.csdn.net/sjhuangx/article/details/81155501
7.flask(系统Web框架)
安装参考 https://blog.csdn.net/cckavin/article/details/90766924

注意!!!
在本地(windows)Spark集群中编写SparkStreaming程序的时候,引入maven配置信息中(此项目依赖如下),scala、kafka、Spark-Streaming-kafka的版本都需要一致,高版本低版本都不行。
本系统使用scala版本为2.11、spark版本为2.4.4(此版本也有scala2.12编写版)、kafka版本为2.4.0(spark-streaming-kafka0.8最高支持kafka2.3.0以下版本,所以此项目使用0.10版本)
在这里插入图片描述
在这里插入图片描述
此外spark-streaming-kafka0.8和0.10在连接kafka时有差别,网上搜的两种连接分别为Receiver DStream和Direct DStream,但是0.10版本取消了Receiver DStream,所以只能用后面一种,而且创建实时数据流代码网上示例很多都过时了,需要用以下官网最新连接代码。(读取kafka数据会报序列化错误,需要注册序列化方式,以下代码中已加入Kryo序列化方式)

//构建conf ssc 对象
val conf = new SparkConf().
  setAppName("Kafka_director").
  setMaster("local[2]").
  set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
conf.registerKryoClasses(Array(
  classOf[Array[org.apache.kafka.clients.consumer.ConsumerRecord[String,String]]]
))
val sc:SparkContext=new SparkContext(conf)

val ssc = new StreamingContext(sc,Seconds(3))
//设置数据检查点
ssc.checkpoint("hdfs://192.168.222.132:9000/checkpoint")
//kafka 需要Zookeeper  需要消费者组
val topics = Set("demo")

val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "192.168.222.132:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "g1",
  "auto.offset.reset" -> "latest",
  "enable.auto.commit" -> (false: java.lang.Boolean)
)

val data = KafkaUtils.createDirectStream(
  ssc,
  PreferConsistent,
  Subscribe[String, String](topics, kafkaParams))

四、系统具体实施

  1. 集群部署和启动
    此处为Hadoop、Zookeeper、Flume以及Kafka整体启动。
    启动Hadoop
    在这里插入图片描述
    启动Zookeeper
    在这里插入图片描述
    加载flume的sink配置文件
    在这里插入图片描述
    启动flume的采集端(采集本地文件)
    在这里插入图片描述
  2. 用户登录:在flask框架中自己添加即可
  3. 数据处理和结果数据存储
    kafka中各个topic以及对应用处
<
topic 用处
demo 接受源数据
ordernumall 总订单数
ordernumgender 男女购物人数
behavior pv+buy+cart+fav
visitnum 总访问量
ordernumage 各年龄段购物人数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Spark的电商用户行为实时分析可视化系统(Flask-SocketIO) 的相关文章

随机推荐

  • 【数字图像处理】图像形态学算法C语言实现(图像卷积,膨胀,腐蚀,开运算,闭运算,顶帽,黑帽,雕版,锐化)

    文章目录 一 图像卷积 1 图像卷积 2 数字信号处理中的卷积 3 数字图像处理中的卷积 二 图像卷积实现各种形态学运算 腐蚀 膨胀 形态学梯度 开运算 闭运算 顶帽 黑帽 雕版 锐化 li conv c main c 三 效果展示 原图
  • SPI转can芯片CSM300详解以及Linux驱动移植调试笔记

    更多嵌入式Linux干货 请关注 一口Linux 一 CSM300概述 CSM300 A 系列是一款可以支持 SPI UART 接口的CAN模块 1 简介 CSM300 A 系列隔离 SPI UART 转 CAN 模块是集成微处理器 CAN
  • Linux常用命令合集(二)

    file命令 该命令用于判断接在file命令后的文件的基本数据 因为在Linux下文件的类型并不是以后缀为分的 所以这个命令对我们来说就很有用了 gt file rumenz txt 查看rumenz txt的文件类型 rumenz txt
  • “泰迪杯”挑战赛 - 通过聚类方法对航空客运的客户进行细分

    目 录 挖掘目标 分析方法与过程 2 1 总体流程 2 2 具体步骤 步骤一 数据预处理 步骤二 群体聚类 步骤三 行为特征聚类 2 3 结果分析 第一类 第二类 第三类 结论 参考文献 1 挖掘目标 本次建模目标是在航空公司的海量会员数据
  • 分享几个好用的WP插件,让你的网站牛逼起来

    1 WP Rocket WPRocket缓存插件是目前最高效灵活的WordPress静态缓存插件 它可以优化你的JSCSS文件结构 减少多次请求 达到优化速度的目的 它还集成了图像延迟加载 对于想要最极致加速的用户来说是一个不错的选择 通过
  • Type Script 之 类型

    Type Script 中的类型有很多 常见的类型有 undefined null boolean number bigint string symbol void object unknown never any 其中基本类型有 void
  • java内存模型 堆栈_Java内存模型分析

    一 Java内存的构成 先上一个官方java document里的图 由上图可知 整块区域分为Young Generation Tenured Generation Permanent Generation 详细解释一下Young区 You
  • Laravel 表单验证器的常用的2种使用方法

    1 使用控制器的 validate 方法进行参数验证 场景一 前后端未分离 保存一篇新的博客文章 param Request request return Response public function store Request req
  • 【csv】csv文件存储上数据精度丢失问题

    最近发现较长的id信息在csv文件中会发生精度丢失 当然python直接处理数据是没问题的 只是csv显示有问题 case1 通常在Excel中输入数值时 如果超过11位 12位及以上 Excel就会用科学计数法显示该数值 如 123456
  • 让macOS支持读写NTFS格式的移动硬盘

    第一步 获知磁盘的名称 两种方法可以知道磁盘名称 第一种 当插入移动硬盘时 桌面上会出现移动硬盘的图标还有名称 第二种 打开终端 输入diskutil list 即可知道磁盘名称 由图中可知我的移动硬盘名称是 备份 第二步 打开终端 按照以
  • 操作系统的逻辑结构

    2 1 操作系统的逻辑结构 逻辑结构 OS的设计和实现思路 逻辑结构的种类 1 整体结构 2 层次式结构 3 微内核结构 客户 服务器结构 Client Server 操作系统作为一个大型软件 它的设计逻辑实现的思路 我们叫做操作系统的逻辑
  • 壁纸网站研究:强大到没朋友的壁纸网站整理(动漫/二次元/宅男/风景/真人)

    1 wallhaven 域名 https wallhaven cc 介绍 一个强大的壁纸网站 包含人物 动漫 风景 同时有一些老司机内容 需要选择NSFW 但需要登录才能观看 隐藏功能 但是海外网站 国内网站较慢 有时候打不开 总结 语言
  • 【华为OD机试真题2023B卷 JAVA&JS】内存资源分配

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 内存资源分配 知识点贪心编程基础 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 有一个简易内存池 内存按照大小粒度分类 每个粒度有若干个可用内存资源 用户会进行一系列内
  • Spring 中容器启动分析之refresh方法执行之前

    内容来自 自学星球 欢迎大家来了解我的星球 和星主 也就是我 一起学习 Java 深入 Java 体系中的所有技术 我给自己定的时间是一年 无论结果如何 必定能给星球中的各位带来点东西 想要了解更多 欢迎访问 自学星球 SSM系列源码文章及
  • JavaScript随机生成颜色

    function getRandomColor const letters 0123456789ABCDEF let color for let i 0 i lt 6 i color letters Math floor Math rand
  • IPv4数据报的分段与重组

    文章摘自书籍 深入理解计算机网络 王达 机械工业出版社 IPv4数据报头格式请点击此处 IPv4数据报的封装与解封装请点击此处 IPv4数据报的分段与重组 在网络层中还涉及一个分段的问题 那就是因为不同网络线路上可以传输的数据报大小是有限制
  • QT学习记录(三)通过ui和代码的方式往窗口添加组件

    写在前面 本文是b站教程的https www bilibili com video BV1g4411H78N p 5 vd source a3efe214b8a2ba185e92e79cb6d6321b的笔记 外加自己的一些其他想法 如有侵
  • mnist example for lstm in caffe

    下面给出在caffe中使用lstm的一个例子 其中数据集采用mnist 为了实现mnist数据的序列话 将mnist的每一行看成一帧 每一列则就是该帧的特征矢量 在使用lstm时 一定要注意clip markers 每个序列以0开始 后面接
  • Unity 编辑器-创建模板脚本,并自动绑定属性,添加点击事件

    当使用框架开发时 Prefab挂载的很多脚本都有固定的格式 从Unity的基础模板创建cs文件 再修改到应有的模板 会浪费一些时间 尤其是有大量的不同界面时 每个都改一遍 浪费时间不说 还有可能遗漏或错改 写个脚本创建指定的模板代替C 基础
  • 基于Spark的电商用户行为实时分析可视化系统(Flask-SocketIO)

    基于Spark的电商用户行为实时分析可视化系统 Flask SocketIO 项目简介 该项目已上线蓝桥课程 有需要的可凭邀请码 UB5mdLbl 学习哦 有优惠 课程地址 https www lanqiao cn courses 2629