计算机毕业设计hadoop+spark+hive美食推荐系统 美食可视化 美食大数据 大数据毕业设计(源码 +LW文档+PPT+讲解)

温馨提示:文末有 优快云 平台官方提供的学长联系方式的名片!

温馨提示:文末有 优快云 平台官方提供的学长联系方式的名片!

温馨提示:文末有 优快云 平台官方提供的学长联系方式的名片!

信息安全/网络安全 大模型、大数据、深度学习领域中科院硕士在读,所有源码均一手开发!

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

介绍资料

Hadoop+Spark+Hive美食推荐系统技术说明

一、系统背景与目标

随着餐饮行业数字化转型加速,用户对个性化美食推荐的需求日益增长。传统推荐系统受限于单机计算能力,难以处理海量用户行为数据与菜品特征。本系统基于Hadoop(分布式存储)、Spark(实时计算)和Hive(数据仓库)构建,旨在实现以下目标:

  1. 精准推荐:结合用户历史行为、菜品属性、实时场景(如时间、天气)生成Top-N推荐列表,点击率(CTR)提升20%以上;
  2. 实时响应:支持用户实时操作(如收藏、评分)后10秒内更新推荐结果;
  3. 跨场景适配:覆盖餐厅点餐、外卖平台、美食APP等多场景,支持冷启动用户与长尾菜品推荐。

二、系统架构设计

系统采用分层架构,分为数据采集层、存储层、计算层和应用层,支持批处理与流计算混合模式:

1. 数据采集层

  • 数据源
    • 用户行为数据
      • 显式反馈:菜品评分(1-5分)、收藏、评论;
      • 隐式反馈:点击、浏览时长、订单记录(含菜品ID、数量、价格);
    • 菜品数据
      • 基础属性:名称、类别(川菜/粤菜等)、口味(辣/甜等)、价格、食材;
      • 多媒体数据:图片(通过CNN提取视觉特征)、描述文本(通过BERT提取语义特征);
    • 外部数据
      • 时间上下文:当前时段(早餐/午餐/晚餐)、节假日;
      • 天气数据:温度、降雨量(影响用户对汤类/冷饮的选择);
      • 地理位置:用户当前位置(推荐附近餐厅)。
  • 采集方式
    • 实时流:通过Kafka接收用户实时操作事件(如评分、收藏),峰值QPS达5000;
    • 批量导入:每日凌晨将前一日订单数据从MySQL同步至Hive,增量更新菜品属性。

2. 存储层

  • HDFS:存储原始数据(用户行为JSON、菜品图片特征二进制文件),按日期分区(如/data/food/orders/2025-11-24/),采用Parquet列式存储,压缩比达1:5。
  • Hive:构建数据仓库,定义外部表映射HDFS文件,支持SQL查询与报表生成。示例表结构:
     

    sql

    1CREATE EXTERNAL TABLE user_actions (
    2  user_id STRING,
    3  dish_id STRING,
    4  action_type STRING COMMENT 'click/order/rate/favorite',
    5  rating INT COMMENT '1-5分',
    6  action_time TIMESTAMP,
    7  duration INT COMMENT '浏览时长(秒)'
    8) PARTITIONED BY (dt STRING) STORED AS PARQUET;
    9
    10CREATE EXTERNAL TABLE dishes (
    11  dish_id STRING,
    12  name STRING,
    13  category STRING,
    14  taste STRING,
    15  price DOUBLE,
    16  ingredients ARRAY<STRING>,
    17  image_feature ARRAY<FLOAT> COMMENT 'CNN提取的512维特征'
    18) STORED AS PARQUET;
  • HBase:存储用户实时画像(如偏好口味、价格敏感度)与菜品实时热度(如当前被收藏次数),行键设计为user_id#feature_type,支持低延迟查询。

3. 计算层

(1)批处理计算(Spark SQL)
  • 历史数据分析
    • 统计用户对各类菜品的平均评分、点击率;
    • 计算菜品相似度(基于共现矩阵,如“宫保鸡丁”与“鱼香肉丝”常被同时点单)。
  • 特征工程
    • 用户特征
      • 基础属性:年龄、性别、地域;
      • 行为特征:过去30天点击/订单次数、偏好类别(Top3)、价格偏好(均值/中位数);
      • 实时特征:当前时段、天气、位置(通过Hive关联外部数据)。
    • 菜品特征
      • 基础属性:类别、口味、价格;
      • 语义特征:BERT提取的菜品描述文本嵌入向量;
      • 视觉特征:CNN提取的图片颜色分布、食材识别结果。
  • 模型训练
    • 协同过滤:Spark ALS算法生成用户-菜品隐语义矩阵;
    • 深度学习模型
      • Wide&Deep:Wide部分为记忆(用户历史行为),Deep部分为泛化(菜品特征嵌入);
      • Two-Tower:用户塔与菜品塔分别生成嵌入向量,通过余弦相似度匹配。
(2)实时计算(Spark Streaming)
  • 实时特征更新
    • 统计每分钟菜品被收藏/评分次数,更新HBase中的实时热度;
    • 监听用户实时操作(如新评分),触发用户画像微调(如更新偏好口味权重)。
  • 实时推荐生成
    • 结合用户实时画像与当前上下文(如“午餐+雨天”),从候选池(Top 1000菜品)中筛选Top 10推荐;
    • 通过布隆过滤器过滤用户已点单/差评菜品。
(3)模型服务化
  • 模型部署
    • 批处理模型:将训练好的ALS矩阵或Wide&Deep模型参数存入HDFS,推荐时通过Spark加载;
    • 实时模型:将Two-Tower模型导出为ONNX格式,通过TensorFlow Serving部署,支持gRPC调用。
  • API设计
    • 输入:user_id + 上下文(timeweatherlocation);
    • 输出:List<DishRecommendation>(含菜品ID、名称、推荐理由、置信度)。

4. 应用层

  • 推荐结果展示
    • 列表页:按置信度排序展示Top 10菜品,支持按类别/价格筛选;
    • 详情页:展示“相似菜品推荐”(基于菜品相似度矩阵);
    • 冷启动处理
      • 新用户:推荐热门菜品(按全局点击率排序);
      • 新菜品:基于属性相似度推荐给历史偏好相似用户。
  • 反馈循环
    • 用户对推荐结果的显式反馈(如“不感兴趣”)通过Kafka实时传入,用于模型迭代;
    • 隐式反馈(如跳过推荐)通过Spark Streaming统计,调整推荐权重。

三、关键技术实现

1. 特征工程优化

  • 多模态特征融合
     

    scala

    1// 示例:合并用户行为特征与上下文特征
    2val userFeatures = spark.read.parquet("hdfs:///data/food/user_profiles/*")
    3  .withColumn("hour", hour($"current_time"))
    4  .withColumn("is_rainy", when($"weather" === "rain", 1).otherwise(0))
    5
    6val contextFeatures = spark.read.format("jdbc").load("jdbc:mysql://db-server/weather_data")
    7
    8val joinedFeatures = userFeatures.join(contextFeatures, Seq("user_id", "hour"))
    9  .select(
    10    col("user_id"),
    11    array(
    12      col("pref_category_1"), col("pref_category_2"), col("pref_category_3")
    13    ).alias("category_prefs"),
    14    col("is_rainy"),
    15    col("current_price_level")
    16  )

2. 推荐模型实现

(1)Spark ALS协同过滤
 

python

1from pyspark.ml.recommendation import ALS
2
3als = ALS(
4  maxIter=10, 
5  rank=50, 
6  regParam=0.01,
7  userCol="user_id", 
8  itemCol="dish_id", 
9  ratingCol="rating",
10  coldStartStrategy="drop"  # 处理冷启动
11)
12model = als.fit(train_data)
13recommendations = model.recommendForAllUsers(10)  # 为每个用户生成Top 10推荐
(2)Two-Tower模型(PySpark + TensorFlow)
  • 用户塔:输入用户ID → Embedding(128维);
  • 菜品塔:输入菜品ID + 类别 + 价格 → Embedding(128维);
  • 损失函数:对比损失(Contrastive Loss),使正样本对(用户点单)距离小于负样本对(随机组合)。

3. 实时推荐流程

 

python

1def get_realtime_recommendations(user_id, context):
2    # 1. 从HBase获取用户实时画像
3    user_profile = hbase_client.get(f"user:{user_id}")
4    
5    # 2. 结合上下文生成查询向量(如"午餐+辣味")
6    query_vector = combine_features(user_profile, context)
7    
8    # 3. 从Faiss索引中检索Top K相似菜品
9    faiss_index = load_index("hdfs:///models/dish_index.faiss")
10    distances, dish_ids = faiss_index.search(query_vector, k=100)
11    
12    # 4. 过滤已点单/差评菜品
13    filtered_dishes = filter_dishes(dish_ids, user_id)
14    
15    # 5. 返回Top 10
16    return filtered_dishes[:10]

四、系统优化与挑战

1. 性能优化

  • 数据倾斜处理
    • 对热门菜品(如“奶茶”)的共现矩阵计算单独分区;
    • 通过加盐技术(如dish_id_1~dish_id_10)分散数据。
  • Spark配置调优
    • spark.executor.memory=12Gspark.sql.shuffle.partitions=2000
    • 启用spark.sql.adaptive.coalescePartitions.enabled=true自动合并小分区。
  • 模型轻量化
    • 对Two-Tower模型进行量化(FP16压缩),推理速度提升3倍;
    • 使用ONNX Runtime优化模型加载与执行。

2. 系统挑战

  • 冷启动问题
    • 新用户:基于注册时选择的口味偏好(如“无辣不欢”)推荐相似菜品;
    • 新菜品:通过属性相似度(如“新川菜”→推荐给历史点川菜用户)或内容推荐(如“低卡”→推荐给健身人群)。
  • 实时性要求
    • 高峰期(如午休)QPS激增至1万,采用以下方案:
      • 缓存热门用户(Top 10%)的推荐结果;
      • 预计算全局热门菜品作为降级方案。
  • 数据稀疏性
    • 长尾菜品(如小众地方菜)交互数据少,采用以下方法:
      • 引入知识图谱(如“宫保鸡丁”→“川菜”→“辣味”);
      • 使用图神经网络(GNN)挖掘菜品间隐含关系。

五、实验与效果评估

1. 实验环境

  • 数据集:某外卖平台2023年Q3用户行为数据(含500万用户、100万菜品、2亿条交互记录);
  • 基线模型
    • Popularity-Based:推荐全局热门菜品;
    • ItemCF:基于菜品共现的协同过滤;
  • 评估指标
    • 离线指标:Precision@10、Recall@10、NDCG@10;
    • 在线指标:点击率(CTR)、转化率(CVR)、用户停留时长。

2. 实验结果

  • 离线评估
    模型Precision@10Recall@10NDCG@10
    Popularity-Based0.120.180.15
    ItemCF0.180.250.22
    ALS0.210.290.26
    Two-Tower0.250.340.30
  • 在线效果
    • 系统上线后,CTR提升22%,CVR提升15%;
    • 用户平均停留时长从45秒延长至58秒,长尾菜品曝光量增加40%。

六、未来展望

  1. 多模态交互:引入语音点餐、图片搜索(如“拍菜找同款”)功能;
  2. 强化学习优化:将推荐视为马尔可夫决策过程(MDP),通过用户反馈动态调整推荐策略;
  3. 绿色推荐:优先推荐低碳菜品(如素食、本地食材),助力可持续发展。

本系统通过Hadoop+Spark+Hive构建了高并发、低延迟的美食推荐平台,为餐饮行业数字化升级提供了可扩展的技术方案。

运行截图

推荐项目

上万套Java、Python、大数据、机器学习、深度学习等高级选题(源码+lw+部署文档+讲解等)

项目案例

优势

1-项目均为博主学习开发自研,适合新手入门和学习使用

2-所有源码均一手开发,不是模版!不容易跟班里人重复!

🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目代码以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌

源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅

点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B站计算机毕业设计大学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值