1 基本信息
1.1 系统名称
基于 Spark 的智能餐饮推荐系统
1.2 开发运行环境
Linux: Ubuntu 14.04
MySQL: 5.7.16
Hadoop: 2.7.1
Hive: 1.2.1
Sqoop: 1.4.6
Spark: 2.1.0
Eclipse: 3.8 (注意:Eclipse 3.8 是一个较旧的版本,考虑使用更新版本)
ECharts: 3.4.0
1.3 使用的核心技术
Spark 大数据分析框架
MLlib 机器学习库
MySQL 数据库管理系统
Hadoop 生态系统(HDFS, YARN 等)
Hive 数据仓库
Sqoop 数据导入导出工具
ECharts 数据可视化库
2. 系统功能设计
本系统旨在通过大数据分析,为用户提供个性化的餐饮推荐。通过分析用户
的饮食偏好、历史记录等信息,结合餐饮商户的菜品、评价等数据,为用户提供
精准、及时的推荐服务。
2.1 系统总体功能
本系统旨在通过大数据分析,为用户提供个性化的餐饮推荐。通过分析用户
的饮食偏好、历史记录等信息,结合餐饮商户的菜品、评价等数据,为用户提供
精准、及时的推荐服务。
2.2 系统模块详细设计
2.2.1 数据预处理功能模块
对原始数据进行清洗、转换、整合等预处理操作
为后续的数据分析和推荐算法提供规范、统一的数据格式
2.2.2 推荐算法功能模块
推荐算法功能是基于 python 机器学习库实现的,旨在通过分析用户的历史
行为和偏好,以及餐饮商户的菜品、评价等信息,为用户提供个性化的餐饮推荐。
该功能采用了协同过滤(Collaborative Filtering)算法,包括用户-用户(User-
User)协同过滤和物品-物品(Item-Item)协同过滤,以确保推荐的准确性和多
样性。
2.2.3 ECharts 功能模块
ECharts 是一个使用 JavaScript 实现的开源可视化库,可以生成各种类型
Spark 读取
查询分析
推荐模型建立并分析
利用 ECharts 进行可
视化分析
菜品、用户数据导
入 mysql
的图表,包括折线图、柱状图、散点图、饼图等。在智能餐饮推荐系统中,ECharts
可以用于展示用户行为数据、菜品销售数据、用户评价等,帮助餐饮管理者直观
地了解餐厅的运营情况和用户偏好。
2.3 数据库设计(使用 E-R 图或者三线表)
用户表:存储用户基本信息(如 ID、姓名等)
菜单表:存储菜单(编号、菜品名)
3. 系统实现
3. 数据预处理功能实现
3.1.1 功能描述
数据预处理功能在智能餐饮推荐系统中扮演着至关重要的角色。它负责清洗、
转换、整合从各种数据源中收集到的原始数据,以确保数据的质量和一致性,为
后续的数据分析和推荐算法提供规范、统一的数据格式。
数据清洗:去除重复、缺失或异常的数据记录,处理格式不一致的数据字段。
数据转换:将数据从原始格式转换为适合分析的格式,例如将字符串类型的
日期转换为日期格式,将文本型的评价转换为数值型评分等。
数据整合:将来自不同数据源的数据整合到一起,形成完整的数据集,以便
进行统一的分析和处理。
3.1.2 核心代码
第 1 步:读取数据
val path = "/home/hadoop/Meal.json"
val df = spark.read.json(path)
df.printSchema()
df.createOrReplaceTempView("data")
spark.sql("select userid, mealid, rating, review from data").show(5)
第 2 步:数据探索
scala
spark.sql("select count(*) as records from data").show()
spark.sql("select count(distinct userid) as users from data").show()
第 3 步:按日期分组统计数据分布
scala
val dataWithDate = spark.sql("select *, (From_Unixtime(reviewtime,
'yyyy-MM-dd')) as reviewdate from data")
dataWithDate.createOrReplaceTempView("dataWithDate")
第 4 步:查询最新评分记录