1. 项目背景与核心价值
零售行业每天产生海量交易数据,但大多数商家仍停留在基础销售统计层面。这个毕业设计项目瞄准了一个实际痛点:如何从零散的消费记录中挖掘出顾客群体的隐藏特征?我们基于Hadoop生态构建了一套完整的分析系统,通过K-means算法对消费行为进行聚类,最终用可视化方式呈现商业洞察。
我在某连锁超市的数据部门实习时,曾亲眼看到市场团队为设计促销方案翻找Excel表格的场景。这套系统正是为了解决这类问题而生——它不仅能自动识别高价值客户群体,还能直观展示不同群体的消费偏好。对于中小型零售商来说,这种轻量级解决方案比商业BI工具更实惠实用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计解析
2.1 整体技术选型
系统采用经典Lambda架构,兼顾批处理和实时性需求:
- 数据层:HDFS存储原始交易日志(CSV格式)
- 处理层:MapReduce做数据清洗 -> Hive构建数据仓库 -> Spark MLlib运行聚类算法
- 展示层:ECharts动态可视化 + SpringBoot后端接口
选择K-means而非DBSCAN等密度算法,主要考虑到:
- 零售消费特征维度明确(消费金额、频次、时段)
- 算法在Spark中已有优化实现(KMeans.train方法)
- 聚类结果易于业务人员理解
实际测试发现,当数据量超过500万条时,Spark比Mahout快3倍以上。建议配置executor内存不低于4GB。
2.2 数据流关键设计
python复制# 典型特征工程处理示例
def preprocess(row):
# 将消费时间转换为时段标签
hour = datetime.strptime(row['time'], '%H:%M').hour
period = 'morning' if hour<12 else 'afternoon' if hour<18 else 'night'
# 构造RFM特征
return {
'user_id': row['user_id'],
'recency': (today - row['last_date']).days,
'frequency': r
