目录
[六、个性化推荐模块:LightFM 混合推荐的落地](#六、个性化推荐模块:LightFM 混合推荐的落地)
[七、系统实现:Flask 接口、Vue 页面与 MySQL 存储](#七、系统实现:Flask 接口、Vue 页面与 MySQL 存储)
有需要本项目的代码、文档、完整资源,或者需要部署调试的朋友,可以私信博主。
做电商数据分析时,我最直观的感受是:平台每天产生的数据并不缺,真正缺的是把这些数据整理成可理解、可行动、可复用的运营信息。点击、浏览、收藏、加购、购买这些行为单独看只是日志,放在一起就能形成用户兴趣、商品热度、转化路径和运营节奏。这个项目正是围绕这样的场景展开:把分散的用户行为数据接入系统,通过 Spark 完成离线统计与分析,再用 Web 大屏和推荐模块呈现出来,帮助商家从数据里看清用户到底在什么时候活跃、对什么商品感兴趣、哪些环节存在流失、哪些商品值得重点运营。
整个系统面向商家和管理员两个角色设计。商家端重点关注数据看板、流量分析、商品分析、用户画像、推荐结果和报表导出;管理员端负责商家账号维护、数据源配置、任务调度、集群状态监控和系统日志查看。这样的划分避免了所有功能堆在一个入口里,也让每个角色都能直接找到自己真正需要的内容。

图 1 系统总体技术架构展示
一、项目整体思路:从行为日志到运营看板
电商业务的用户行为数据通常具有三个特点:数量大、字段杂、业务含义强。一个用户可能只是点开商品详情页,也可能收藏、加入购物车、最终购买;一次行为背后还会关联时间、商品类别、用户位置、价格区间等信息。如果仅靠人工查看表格,很难判断哪些指标真正影响经营。
因此,我在设计系统时采用了"数据采集与预处理---Spark 离线分析---MySQL 结果存储---Flask 接口服务---Vue/ECharts 可视化---LightFM 推荐"的链路。底层把原始行为日志清洗为标准化数据,中间层完成指标计算与推荐模型训练,上层通过可视化页面展示结果。这样做的好处是数据处理、业务接口和前端展示相对解耦,后续增加新指标或者替换推荐算法时,不需要推倒重来。
在部署方式上,项目选择 Spark 伪分布式环境。它可以在单台机器上模拟 Master 和 Worker 的分布式运行状态,既保留 Spark 分布式计算的开发方式,又降低硬件成本,适合课程设计、毕业设计、实验室演示和中小规模场景验证。对于需要继续扩展的数据量,只需要把数据源和计算节点迁移到更完整的 Spark 集群即可。
二、功能角色设计:商家看数据,管理员管系统
系统的核心使用者是商家。商家登录后,不需要理解 Spark 任务如何运行,也不需要直接接触 SQL 语句,只需要通过页面查看核心指标和图表。首页看板展示 PV、UV、购买量、收藏量、加购量、跳失率、复购率等关键指标;流量分析展示每日趋势和每小时行为分布;商品分析展示热门类目、热销商品和地理位置购买排行;推荐模块可以选择指定用户生成商品推荐列表。
管理员端则更偏系统运维与后台管理,包括商家账号增删改查、权限配置、数据源路径维护、任务调度、Spark 任务日志查看、数据库连接状态和异常监控等。项目没有把管理员功能写成单纯的"后台列表",而是把数据任务和系统运行状态纳入管理范围,这样更接近真实业务系统的使用逻辑。

图 2 商家端与管理员端功能用例展示
三、数据处理链路:清洗、标准化与指标落库
数据进入分析层之前,需要先做预处理。原始行为日志中常见的问题包括重复记录、缺失字段、字段命名不统一、时间格式不一致以及行为类型表达不规范。项目先对原始数据做去重、缺失值处理和字段标准化,再将用户行为统一映射为点击、收藏、加购、购买等可分析动作,为后续 Spark 统计和推荐建模打好基础。
离线分析部分主要由 Spark SQL 和 DataFrame API 完成。Spark 负责读取清洗后的行为数据,按日期、小时、商品、用户、地理位置等维度做聚合统计,生成总体指标、每日趋势、商品热度、用户活跃度、行为转化路径等结果。计算结果写入 MySQL,表结构采用分析结果表的方式组织,方便后端接口按需读取,也便于后续接入更多看板。
这里我没有把所有计算逻辑直接写在前端,也没有让页面实时扫描原始日志。前端只请求已经聚合好的结果,后端只负责接口转换和权限控制,Spark 专注于批量计算。这样页面打开速度更稳定,系统职责也更清晰。
四、可视化大屏:把复杂行为变成可判断的图表
系统最重要的展示入口是电商用户行为分析大屏。这个页面集中呈现核心经营指标、每日行为趋势、指标明细表、小时行为对比、Top10 商品类目、Top10 热销商品、关键转化指标和行为构成占比。相比单个图表分散展示,大屏更适合做整体汇报和运营观察。
从大屏中可以直接看出用户访问峰值、购买时段分布、收藏与加购转化情况等信息。例如,小时行为对比可以帮助商家判断用户活跃时间段;商品类目排行可以辅助选品和活动配置;跳失率、复购率等指标可以反映用户是否愿意继续浏览和复购。对商家来说,数据不是越多越好,而是要能快速回答"哪里表现好、哪里需要优化"。

图 3 电商用户行为分析大屏展示
单页图表部分则更适合做细节拆解。项目使用 ECharts/Pyecharts 生成柱状图、折线图、饼图、环形图、热力图等多种图表。柱状图用来呈现类目排行和商品热度,折线图用来观察趋势变化,饼图和环形图适合表达行为占比,热力图可以展示用户活跃密度。不同图表承担不同的分析任务,不是为了堆效果,而是为了降低理解成本。

图 4 经营概览、趋势与排行图表展示
五、行为分析维度:从点击热度到转化路径
在用户行为分析中,我重点保留了点击、收藏、加购、购买四类核心动作。点击代表曝光和兴趣入口,收藏代表持续关注,加购代表较强购买意向,购买则代表最终转化。四类行为组合起来,可以形成一条相对完整的消费路径。
系统通过 PV/UV 统计观察整体流量,通过每日趋势判断运营周期,通过小时分布识别高活跃时间,通过商品热度排行锁定重点商品,通过地理位置分布发现潜在重点区域。对于商家来说,这些指标可以直接用于活动节奏安排、商品排序优化、投放时段选择和库存备货判断。
项目中还加入了跳失率、复购率等指标。跳失率能反映用户进入后是否快速离开,复购率则反映用户是否愿意再次购买。单看成交量容易忽略用户质量,加入这两个指标后,商家可以从"流量有没有来"进一步看见"流量有没有留下"和"用户有没有回来"。

图 5 热度分析与时段趋势展示

图 6 复购、跳失与日趋势分析展示
六、个性化推荐模块:LightFM 混合推荐的落地
推荐模块是系统中比较有意思的一部分。传统协同过滤主要依赖用户和商品之间的历史交互,如果新用户或新商品缺少交互记录,就容易出现冷启动问题。这个项目选择 LightFM,是因为它能把协同过滤与内容特征结合起来,在用户行为数据之外继续利用用户特征、商品类别、价格区间等信息,形成更加灵活的推荐表示。
在建模时,系统根据点击、收藏、加购、购买等行为构建加权交互矩阵。不同动作的权重不同,购买通常代表更强偏好,加购和收藏次之,点击作为兴趣信号。通过这种方式,模型不只是知道用户看过什么,还能区分用户只是浏览、产生兴趣、产生购买意向还是已经完成交易。
推荐结果通过 Web 页面展示,用户选择或输入用户 ID 后,系统返回对应的商品推荐列表。页面同时展示用户历史行为和推荐结果,方便对比"用户过去偏好"和"系统推荐方向"是否一致。完整的模型训练、特征处理、参数配置和部署脚本没有在展示中全部展开,实际项目资源里已经做了较完整的工程封装。

图 7 登录入口与智能推荐页面展示
七、系统实现:Flask 接口、Vue 页面与 MySQL 存储
后端使用 Flask 承担接口服务,负责接收前端请求、读取 MySQL 中的分析结果、调用推荐模块并返回 JSON 数据。Flask 的结构轻量,适合这种数据分析类系统,既能快速开发接口,也方便后续拆分成更规范的服务层。
前端采用 Vue.js、Element UI 和 ECharts 实现页面交互。Vue 负责页面组件和状态管理,Element UI 提供基础表单与列表组件,ECharts 负责图表渲染。页面支持图表展示、指标卡片、表格明细、推荐结果卡片等多种形式,整体偏业务看板风格。
数据库使用 MySQL 存储系统管理数据和分析结果数据。商家表、管理员表用于登录和权限管理,分析结果表保存 Spark 离线计算后的数据。为了保证安全性,系统设计中考虑了身份认证、密码加密、权限控制、SQL 注入防护和异常日志记录等内容。虽然这是一个毕业设计项目,但整体结构已经具备继续扩展为小型数据产品的基础。
八、开发与部署体验:尽量把流程做成可复现
在开发过程中,我把可复现性放在比较重要的位置。数据处理脚本、Spark 统计任务、MySQL 表结构、Flask 接口和前端页面尽量保持清晰的目录划分,避免后期部署时找不到入口。系统运行时,分析任务先产出结果表,接口再按页面需要读取对应结果,这样前端调试和后端计算可以分开进行。
测试时主要关注三类问题:一是登录、注册、商家管理、推荐查询等基础功能是否能完整走通;二是大屏图表在不同数据量下是否能正常加载;三是 Spark 任务失败后是否能通过日志定位问题。对于展示类项目来说,功能能打开只是第一步,更重要的是页面、数据和模型三者要保持一致。
项目资料中还预留了继续扩展的空间。例如可以把离线计算任务做成定时调度,按天刷新商家数据;也可以为不同商家配置不同的数据源,实现多租户分析;还可以把推荐结果与商品运营动作结合起来,形成"看数---判断---推荐---运营"的闭环。
九、项目亮点与后续扩展方向
这个项目最值得保留的地方,是它不是只做了几个静态图表,而是把数据处理、行为分析、推荐算法和系统展示串成了一条完整链路。从原始行为数据到 Spark 分析,再到 MySQL 落库、Flask 接口、Vue 大屏、LightFM 推荐,整个过程能够形成闭环。
后续如果继续完善,可以从几个方向扩展:第一,数据源可以从离线文件升级为 Kafka 或 Hive,支持更接近真实业务的数据接入;第二,推荐算法可以加入 DeepFM、DIN 等更复杂模型,用于更细粒度的兴趣建模;第三,分析指标可以增加转化漏斗、留存分析、用户分群和 RFM 价值分层;第四,权限体系可以继续细化,实现多商家数据隔离、接口限流和任务审计。
对于需要学习 Spark 大数据处理、Flask 后端开发、Vue 数据大屏、ECharts 可视化和推荐算法落地的同学,这个项目比较适合作为综合训练案例。它既包含工程开发,也包含数据分析和推荐建模,适合用于毕业设计、课程项目、竞赛展示和个人作品集。
完整资源中包含系统源码、数据库脚本、分析任务、推荐模型、可视化页面、部署说明和相关运行截图,后续还可以根据不同场景继续改造成用户画像分析平台、商品运营分析平台或数据看板系统。
每文一语
"解决问题,而非实现功能。"