计算机毕业设计Spark+Hive+Flask校园二手图书交易数据可视化 校园二手图书交易小程序数据采集与存储 大数据毕业设计(源码+LW+PPT+讲解)
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
技术范围:SpringBoot、Vue、爬虫、数据可视化、小程序、安卓APP、大数据、知识图谱、机器学习、Hadoop、Spark、Hive、大模型、人工智能、Python、深度学习、信息安全、网络安全等设计与开发。
主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码、文档辅导、LW文档降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。
🍅本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片🍅
🍅本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片🍅
🍅本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片🍅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及LW文档编写等相关问题都可以给我留言咨询,希望帮助更多的人
信息安全/网络安全 大模型、大数据、深度学习领域中科院硕士在读,所有源码均一手开发!
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

介绍资料
本文面向校园二手图书交易场景,完整介绍如何基于Spark、Hive与Flask搭建一套从数据清洗、离线分析到Web可视化展示的全流程系统,适合大数据初学者与校园项目开发者参考。
一、项目背景与目标
随着高校二手图书交易平台的普及,平台积累了大量交易数据,但多数系统仅停留在基础下单与支付功能层面,缺少对图书品类、交易趋势、用户行为的深度分析。本项目以校园二手图书交易数据为基础,通过大数据技术栈完成数据处理与可视化,帮助运营者直观掌握平台运行状态,为图书推荐、库存优化与运营决策提供数据支撑。
项目核心目标:
- 完成校园二手图书交易数据的结构化清洗与标准化存储
- 基于Spark实现多维度离线统计分析,挖掘数据潜在价值
- 通过Flask搭建轻量级Web服务,将分析结果以可视化图表形式展示
- 提供可扩展的架构,支持后续接入实时数据流与更多分析维度
二、技术栈选型说明
表格
| 组件 | 作用 | 版本参考 |
|---|---|---|
| Spark Core / Spark SQL | 分布式数据清洗、统计分析与任务调度 | Spark 3.3.0 |
| Hive | 数据仓库,用于结构化交易数据的分层存储与元数据管理 | Hive 3.1.2 |
| Flask | 轻量级Python Web框架,提供后端接口与页面渲染 | Flask 2.2.5 |
| ECharts | 前端可视化库,实现折线图、饼图、柱状图等图表展示 | ECharts 5.4.3 |
| MySQL | 存储分析结果与基础配置信息 | MySQL 8.0 |
| Python 3 | 开发语言,用于数据处理与Web服务开发 | Python 3.8 |
三、系统整体架构设计
本系统采用经典的“数据采集-数据处理-数据服务-可视化展示”四层架构:
- 数据层:原始交易日志、用户行为数据、图书基础数据先落地到HDFS,通过Hive创建外部表完成数据映射
- 计算层:使用Spark SQL读取Hive表数据,完成ETL清洗与多维度指标计算,最终将分析结果写入MySQL
- 服务层:Flask后端从MySQL读取预计算好的指标数据,封装为RESTful接口返回给前端
- 展示层:前端页面通过ECharts渲染各类可视化图表,实现校园二手图书交易数据的直观呈现
整体架构优势在于将复杂计算任务交给Spark离线完成,Web服务仅做轻量级数据查询,保证页面访问速度,同时便于后续任务调度与监控扩展。
四、数据仓库分层设计
在Hive中我们采用ODS层、DWD层、DWS层的经典分层模型:
4.1 ODS层
原始数据层,直接映射HDFS上的原始日志文件,不做任何清洗操作,保留数据原貌。
sql
CREATE EXTERNAL TABLE IF NOT EXISTS ods_secondhand_book_order ( order_id STRING COMMENT '订单ID', user_id STRING COMMENT '用户ID', book_id STRING COMMENT '图书ID', book_name STRING COMMENT '图书名称', category STRING COMMENT '图书分类', price DECIMAL(10,2) COMMENT '交易价格', order_time STRING COMMENT '下单时间', campus STRING COMMENT '所在校区' ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/hive/ods/secondhand_book_order/';
4.2 DWD层
清洗层,对ODS层数据进行去重、空值过滤、时间格式标准化,生成干净的明细数据。
sql
CREATE TABLE IF NOT EXISTS dwd_secondhand_book_order AS SELECT order_id, user_id, book_id, book_name, category, price, to_timestamp(order_time, 'yyyy-MM-dd HH:mm:ss') AS order_time, campus FROM ods_secondhand_book_order WHERE order_id IS NOT NULL AND price > 0;
4.3 DWS层
汇总层,面向统计指标提前完成聚合计算,为后续Spark分析提供高效数据源。
sql
CREATE TABLE IF NOT EXISTS dws_daily_sales ( dt STRING COMMENT '日期', total_order INT COMMENT '当日订单量', total_amount DECIMAL(10,2) COMMENT '当日交易额' ) PARTITIONED BY (dt) STORED AS PARQUET;
五、Spark核心分析代码实现
使用Spark SQL连接Hive,完成多维度指标计算,以下是核心代码示例:
from pyspark.sql import SparkSession
# 创建SparkSession并支持Hive
spark = SparkSession.builder \
.appName("SecondHandBookAnalysis") \
.enableHiveSupport() \
.getOrCreate()
# 1. 统计每日交易趋势
daily_sales_df = spark.sql("""
SELECT
date_format(order_time, 'yyyy-MM-dd') as dt,
count(distinct order_id) as order_cnt,
sum(price) as total_amount
FROM dwd_secondhand_book_order
GROUP BY date_format(order_time, 'yyyy-MM-dd')
ORDER BY dt
""")
# 2. 统计图书分类占比
category_df = spark.sql("""
SELECT
category,
count(*) as cnt
FROM dwd_secondhand_book_order
GROUP BY category
""")
# 3. 统计各校区交易排行
campus_df = spark.sql("""
SELECT
campus,
sum(price) as campus_amount
FROM dwd_secondhand_book_order
GROUP BY campus
ORDER BY campus_amount DESC
""")
# 将结果写入MySQL,供Flask读取
daily_sales_df.write.format("jdbc") \
.option("url", "jdbc:mysql://localhost:3306/book_db") \
.option("dbtable", "daily_sales") \
.option("user", "root") \
.option("password", "123456") \
.mode("overwrite") \
.save()
六、Flask后端接口开发
Flask负责从MySQL读取分析结果,封装为接口返回前端,核心代码如下:
from flask import Flask, jsonify, render_template
import pymysql
app = Flask(__name__)
# 数据库连接
def get_db_conn():
return pymysql.connect(
host='localhost',
user='root',
password='123456',
database='book_db',
charset='utf8'
)
# 首页路由
@app.route('/')
def index():
return render_template('index.html')
# 获取每日交易数据接口
@app.route('/api/daily_sales')
def daily_sales():
conn = get_db_conn()
cursor = conn.cursor()
cursor.execute("SELECT dt, order_cnt, total_amount FROM daily_sales ORDER BY dt")
data = cursor.fetchall()
conn.close()
return jsonify({
'dates': [item[0] for item in data],
'order_cnt': [item[1] for item in data],
'total_amount': [float(item[2]) for item in data]
})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
七、ECharts前端可视化实现
在templates/index.html中引入ECharts,完成图表渲染:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>校园二手图书交易数据可视化</title>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js">
</head>
<body style="margin: 0;padding: 0;">
<div id="salesChart" style="width: 90%;height: 400px;margin: 20px auto;"></div>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('salesChart'));
fetch('/api/daily_sales')
.then(res => res.json())
.then(data => {
var option = {
title: {text: '每日交易趋势'},
xAxis: {type: 'category', data: data.dates},
yAxis: [
{type: 'value', name: '订单量'},
{type: 'value', name: '交易额'}
],
series: [
{name: '订单量', type: 'line', data: data.order_cnt},
{name: '交易额', type: 'bar', yAxisIndex: 1, data: data.total_amount}
]
};
myChart.setOption(option);
});
</script>
</body>
</html>
八、项目部署与运行流程
- 启动Hadoop、Hive与Spark集群服务,将原始交易数据上传至HDFS对应路径
- 在Hive中创建ODS、DWD、DWS三层表,完成数据映射与清洗
- 提交Spark任务运行分析代码,将统计结果写入MySQL数据库
- 启动Flask服务,访问
http://localhost:5000即可查看可视化页面 - 可配置Airflow调度器,实现每日凌晨自动执行Spark分析任务,完成数据更新
九、项目总结与扩展方向
本项目通过Spark+Hive+Flask的组合,低成本实现了校园二手图书交易数据的全流程分析与可视化,非常适合作为大数据课程设计与毕设项目。后续可扩展方向包括:接入Kafka实现实时交易数据统计、增加用户画像与图书推荐模块、搭建集群监控页面等,进一步提升系统的实用性与复杂度。
运行截图
推荐项目
上万套Java、Python、大数据、机器学习、深度学习等高级选题(源码+lw+部署文档+讲解等)
项目案例











优势
1-项目均为博主学习开发自研,适合新手入门和学习使用
2-所有源码均一手开发,不是模版!不容易跟班里人重复!

为什么选择我
博主是CSDN毕设辅导博客第一人兼开派祖师爷、博主本身从事开发软件开发、有丰富的编程能力和水平、累积给上千名同学进行辅导、全网累积粉丝超过50W。是CSDN特邀作者、博客专家、新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流和合作。
🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目代码以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌
源码获取方式
🍅由于篇幅限制,获取完整文章或源码、代做项目的,本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片。🍅
点赞、收藏、关注,不迷路
更多推荐








所有评论(0)