云计算百科
云计算领域专业知识百科平台

基于Hive的转转二手手机销量分析与预测-完整源码论文毕设项目

========【重要提示:主页置顶文章找我咨询】=======

博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,不断的进行新技术的项目实战👈

可定制,需求的各位可以先收藏起来

1. 项目概述

1.1 系统目标

本系统旨在构建一个基于Hive大数据平台转转二手手机销量分析与预测系统,能够从转转平台采集二手手机销售数据,利用Hive进行数据清洗、存储和多维度分析,并运用时间序列预测模型对未来销量进行预测,为平台运营决策和消费者选择提供数据支持。

1.2 系统用途

  • 数据分析:从品牌、价格区间、地区、时间等多个维度分析二手手机销量特征和规律

  • 销量预测:基于历史数据,使用ARIMA、指数平滑、移动平均等时间序列模型预测未来30天销量

  • 可视化展示:通过Web大屏和管理后台提供直观的数据展示和查询功能

1.3 整体流程

系统采用数据仓库分层架构(ODS → DWD → DWS → ADS),完整流程如下:

数据采集 → ETL处理 → 多维分析 → 模型预测 → 结果存储 → Web可视化展示

详细流程:

  • 数据采集:使用Python爬虫采集转转平台二手手机数据(品牌、型号、价格、地区等)

  • ETL处理:将原始数据上传至HDFS,通过Hive进行数据清洗、转换,构建ODS/DWD/DWS/ADS四层数据仓库

  • 多维分析:使用Hive SQL对DWS层数据进行聚合分析,生成品牌、价格区间、地区、时间序列等维度分析结果

  • 模型预测:从Hive加载时间序列数据,使用Python时间序列模型(ARIMA、指数平滑、移动平均)进行训练和预测

  • 结果存储:将分析结果和预测结果保存到Hive ADS层表

  • Web展示:通过Flask后端提供API接口,前端使用Vue.js和ECharts渲染数据可视化大屏和管理后台


  • 2. 技术栈简述

    2.1 数据存储与处理

    • Hadoop HDFS:分布式文件系统,存储原始数据和处理后的数据文件

    • Hive:数据仓库工具,提供SQL接口进行数据查询、清洗、聚合,支持数据仓库分层设计

    • Hive Beeline:通过JDBC连接Hive,执行SQL语句和数据查询

    2.2 数据处理与分析

    • Python 3.x:主要编程语言,实现数据采集、ETL、分析和预测功能

    • Pandas:数据处理库,用于数据清洗、转换、聚合

    • NumPy:数值计算库,支持数组运算和统计分析

    2.3 机器学习与预测

    • statsmodels:统计模型库,提供ARIMA和指数平滑等时间序列预测模型

    • scikit-learn:机器学习库,用于模型评估指标计算(MAE、RMSE等)

    2.4 Web开发

    • Flask:Python Web框架,提供RESTful API接口,查询Hive数据并返回JSON格式结果

    • Vue.js 3:前端框架,构建响应式单页应用

    • ECharts 5:数据可视化库,渲染各种图表(折线图、柱状图、饼图等)

    • Axios:HTTP客户端库,前端与后端API通信

    2.5 其他工具

    • Matplotlib/Seaborn:Python可视化库,生成静态分析图表

    • requests/BeautifulSoup:HTTP请求和HTML解析,用于数据爬取

    • PyYAML:配置文件解析


    3. 项目结构总览

    backend/
    ├── main.py                 # 主入口文件,支持多模式运行(collect/etl/analysis/predict/visualize)
    ├── app.py                 # Flask Web应用,提供API接口和前端页面路由
    ├── requirements.txt       # Python依赖包列表
    ├── config/
    │   └── config.yaml         # 系统配置文件(Hive连接、数据路径、参数等)
    ├── data/
    │   ├── shared/             # 共享数据目录(原始CSV数据)
    │   └── users.json         # 用户认证数据
    ├── src/                   # 源代码目录
    │   ├── crawler/           # 数据采集模块
    │   │   └── spider.py       # 爬虫实现,采集转转平台数据
    │   ├── etl/               # ETL数据处理模块
    │   │   └── data_processor.py # 数据清洗、转换,构建Hive数据仓库分层
    │   ├── analysis/           # 数据分析模块
    │   │   └── analyzer.py     # 多维度分析(品牌、价格、地区、时间序列等)
    │   ├── prediction/         # 销量预测模块
    │   │   └── predictor.py   # 时间序列模型训练与预测
    │   ├── visualization/     # 可视化模块
    │   │   └── visualizer.py   # 生成静态图表
    │   ├── utils/             # 工具模块
    │   │   ├── hive_beeline.py # Hive连接和SQL执行工具
    │   │   ├── config_loader.py # 配置加载工具
    │   │   └── logger.py       # 日志工具
    │   └── auth/               # 认证模块
    │       └── auth.py         # 用户认证逻辑
    ├── frontend/               # 前端文件目录
    │   ├── index.html         # 数据可视化大屏页面
    │   ├── admin.html         # 管理后台页面
    │   ├── js/
    │   │   ├── dashboard.js   # 大屏前端逻辑(Vue.js)
    │   │   └── admin.js       # 管理后台前端逻辑
    │   └── css/               # 样式文件
    ├── output/                 # 输出目录
    │   ├── analysis/           # 分析结果CSV文件
    │   ├── prediction/         # 预测结果CSV文件
    │   └── visualization/     # 可视化图表文件
    └── logs/                   # 日志文件目录

    主要文件职责说明:

    • main.py:命令行入口,通过–mode参数选择运行模式(数据采集/ETL/分析/预测/可视化)

    • app.py:Flask应用,提供数据查询API和前端页面服务

    • src/etl/data_processor.py:实现数据仓库ODS/DWD/DWS/ADS四层表的创建和数据加载

    • src/analysis/analyzer.py:实现多维度Hive SQL分析和结果保存

    • src/prediction/predictor.py:实现时间序列模型训练、评估和未来销量预测

    • src/utils/hive_beeline.py:封装Hive Beeline连接,支持SQL执行和数据查询


    =======【重要提示:主页置顶文章找我咨询】=========

    4. 主要功能模块说明

    4.1 数据采集模块(crawler/spider.py)

    功能:从转转平台采集二手手机销售数据

    • 爬取字段:品牌、型号、成色、价格、销售时间、地区、销量、浏览量、评论数等

    • 实现方式:使用requests和BeautifulSoup解析HTML,支持分页采集和反爬虫策略

    • 调用关系:独立运行,生成CSV文件保存到data/shared/

    4.2 ETL数据处理模块(etl/data_processor.py)

    功能:数据清洗、转换和加载,构建Hive数据仓库分层架构

    • ODS层:原始数据表(ods_rephone_raw),直接映射HDFS上的CSV文件

    • DWD层:明细数据层(dwd_rephone_clean),清洗后的数据,去除无效值和重复数据

    • DWS层:汇总数据层,按品牌、地区、价格区间等维度汇总(dws_brand_sales_daily、dws_region_sales_daily、dws_price_range_sales)

    • ADS层:应用数据层(ads_brand_analysis),面向应用的分析结果表

    • 实现方式:使用Hive SQL的INSERT OVERWRITE进行数据转换和聚合,通过HiveBeeline执行SQL

    • 调用关系:被main.py的etl模式调用,依赖Hive和HDFS环境

    4.3 数据分析模块(analysis/analyzer.py)

    功能:多维度销量分析,生成分析结果并保存到Hive ADS层表

    • 品牌分析:统计各品牌总销量、平均价格、销售额、市场占比

    • 价格区间分析:按价格区间(0-1000、1000-2000等)统计销量分布

    • 地区分析:统计各地区销量、平均价格、销售额

    • 时间序列分析:按日期汇总销量、平均价格、销售额,生成时间序列数据

    • 成色分析:按成色等级统计销量分布

    • 品牌趋势分析:按品牌和月份分析销量变化趋势

    • 汇总报告:生成整体统计数据(总销量、品牌数量、平均价格等)

    • 实现方式:使用Hive SQL聚合查询,结果保存到对应的ADS层表

    • 调用关系:被main.py的analysis模式调用,依赖ETL模块生成的DWS层数据

    4.4 销量预测模块(prediction/predictor.py)

    功能:基于时间序列数据构建预测模型,预测未来30天销量

    • 模型类型:

      • ARIMA模型:自回归积分滑动平均模型,处理趋势和季节性

      • 指数平滑模型(Holt-Winters):适用于具有趋势和季节性的时间序列

      • 移动平均模型:简单滑动平均预测

    • 模型评估:计算MAE(平均绝对误差)、RMSE(均方根误差)、MAPE(平均绝对百分比误差)

    • 预测结果:保存到ads_future_forecast表,包含预测日期、预测销量、预测类型

    • 实现方式:从Hive加载时间序列数据,使用statsmodels库训练模型,评估后保存结果到Hive

    • 调用关系:被main.py的predict模式调用,依赖分析模块生成的时间序列数据

    4.5 Web服务模块(app.py)

    功能:提供RESTful API接口,供前端查询分析结果和预测数据

    • 数据查询API:

      • /api/data/summary:获取汇总统计数据

      • /api/analysis/brand:获取品牌分析数据

      • /api/analysis/region:获取地区分析数据

      • /api/analysis/price:获取价格区间分析数据

      • /api/analysis/timeseries:获取时间序列数据

      • /api/prediction/future:获取未来预测数据

      • /api/prediction/evaluation:获取模型评估数据

      • /api/admin/tables:获取所有Hive表数据(管理后台使用)

    • 实现方式:通过HiveBeeline查询Hive表,将结果转换为JSON格式返回,处理列名映射和NaN值过滤

    • 调用关系:前端通过axios调用API,后端查询Hive返回数据

    4.6 前端可视化模块

    功能:数据可视化大屏和管理后台

    • 数据大屏(dashboard.js):

      • 核心指标展示:总销量、品牌数量、平均价格、总销售额

      • 图表展示:品牌销量排行、价格区间分布、地区销量分布、时间序列趋势、未来30天预测、模型性能评估

      • 实现方式:Vue.js管理数据状态,ECharts渲染图表,通过axios调用后端API获取数据

    • 管理后台(admin.js):

      • 表数据浏览:查看所有Hive分析表和预测表的数据

      • 实现方式:表格形式展示Hive表数据,支持多表切换


    5. 关键接口或核心逻辑说明

    5.1 Hive连接与SQL执行(utils/hive_beeline.py)

    功能:封装Hive Beeline连接,提供SQL执行和数据查询接口

    • execute(sql): 执行DDL/DML SQL语句(CREATE TABLE、INSERT等),通过Docker容器执行beeline命令

    • query(sql): 执行SELECT查询,返回pandas DataFrame,通过解析beeline输出获取查询结果

    • 调用方式:各模块通过HiveBeeline()创建实例,调用connect()连接后执行SQL

    5.2 ETL数据仓库构建(etl/data_processor.py)

    核心方法:

    • init_database(): 创建Hive数据库

    • create_ods_table(): 创建ODS层原始数据表

    • clean_and_transform(): 数据清洗转换,生成DWD层数据(过滤NULL、价格异常值等)

    • aggregate_data(): 数据聚合,生成DWS层汇总表

    • generate_ads_data(): 生成ADS层应用数据

    • 调用方式:运行python main.py –mode etl执行完整ETL流程

    5.3 多维度分析(analysis/analyzer.py)

    核心方法:

    • analyze_by_brand(): 品牌维度分析,使用GROUP BY和窗口函数计算市场占比

    • analyze_by_price_range(): 价格区间分析,使用CASE WHEN分类统计

    • analyze_by_region(): 地区维度分析

    • analyze_by_time(): 时间序列分析,按日期聚合

    • _save_to_hive(): 将分析结果保存到Hive表,处理列名映射和数据格式

    • 调用方式:运行python main.py –mode analysis执行所有分析任务

    5.4 时间序列预测(prediction/predictor.py)

    核心方法:

    • load_time_series_data(): 从Hive加载时间序列数据

    • split_train_test(): 按时间顺序划分训练集和测试集(默认8:2)

    • predict_arima(): ARIMA模型预测,使用statsmodels.ARIMA

    • predict_exponential_smoothing(): 指数平滑模型预测

    • predict_moving_average(): 移动平均模型预测

    • evaluate_models(): 模型评估,计算MAE、RMSE、MAPE指标

    • forecast_future(): 未来30天销量预测

    • _save_to_hive(): 保存预测结果和评估结果到Hive表

    • 调用方式:运行python main.py –mode predict执行预测流程

    5.5 Flask API接口(app.py)

    主要接口:

    • 所有/api/analysis/*接口:查询对应的Hive ADS层分析表,过滤NaN值,映射列名为中文,返回JSON

    • /api/prediction/future?days=30:查询未来预测表,支持days参数指定天数

    • /api/admin/tables?table=all:查询所有Hive表数据,支持table参数指定单个表

    • 调用方式:前端通过HTTP GET请求调用,返回JSON格式数据


    6. 前后端交互概述

    6.1 数据流转方式

  • 数据流向:Hive表 → Flask API → JSON响应 → Vue.js前端 → ECharts图表

  • 数据格式:Hive表存储结构化数据,API转换为JSON,前端解析为JavaScript对象

  • 6.2 主要请求流程

    数据大屏加载流程:

  • 前端页面加载(index.html)

  • Vue.js应用初始化(dashboard.js)

  • 调用loadAllData()方法,并行发起多个API请求:

    • GET /api/data/summary → 获取汇总统计

    • GET /api/analysis/brand → 获取品牌分析

    • GET /api/analysis/region → 获取地区分析

    • GET /api/analysis/price → 获取价格分析

    • GET /api/analysis/timeseries?limit=30 → 获取时间序列

    • GET /api/prediction/future?days=30 → 获取未来预测

    • GET /api/prediction/evaluation → 获取模型评估

  • 后端通过HiveBeeline查询对应的Hive表

  • 处理数据(去除表名前缀、过滤NaN、列名映射、类型转换)

  • 返回JSON格式数据

  • 前端接收数据,调用render*Chart()方法使用ECharts渲染图表

  • 管理后台数据浏览流程:

  • 访问/admin页面

  • 前端调用GET /api/admin/tables?table=all

  • 后端查询所有Hive分析表和预测表

  • 返回包含所有表数据的JSON对象

  • 前端根据当前选择的表(currentTable)显示对应数据表格

  • 6.3 数据预处理

    后端API在返回数据前会进行以下处理:

    • 去除表名前缀:Hive返回的列名可能包含表名前缀(如ads_brand_analysis.brand),需要去除

    • 过滤NaN值:使用dropna()过滤包含NaN的行

    • 列名映射:将英文列名映射为中文(如brand → 品牌)

    • 类型转换:确保数值列为数值类型,日期列为日期格式

    资料获取

    ========【重要提示:主页置顶文章找我】========

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 基于Hive的转转二手手机销量分析与预测-完整源码论文毕设项目
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!