计算机大数据毕设现——基于Hadoop的健康饮食数据分析可视化推荐系统(hadoop-spark-hive,springboot-vue-mysql,爬虫)
·
基于Hadoop的健康饮食推荐系统的设计与实现
前言介绍
本文基于Hadoop的健康饮食推荐系统采用Spring Boot、Vue.js、MySQL、Element UI、Spring Data JPA,Hadoop,Spark,hive等技术,构建了一个功能全面的Web应用。该系统实现了用户注册与登录、用户个人信息管理、用户饮食记录等功能模块,为用户提供个性化的饮食推荐服务。管理员可以通过系统进行用户信息管理和饮食记录审核。此外,Python爬虫技术用于采集最新的饮食数据,确保推荐内容的时效性和准确性。
系统通过整合前后端技术,提供了高效的数据处理和用户体验。Hadoop集群负责存储和处理大规模饮食数据。系统的模块化设计使得各功能相互独立又紧密协作,提升了系统的可扩展性和维护性。用户能够方便地浏览和选择适合自己健康需求的菜单,管理员则可以灵活地管理用户信息和审核饮食记录,确保系统的正常运行。
01开发环境
1.1Java 技术
1.2Spring Boot 框架
1.3Hadoop,spark,hive
1.4Scrapy爬虫
1.5MySQL数据库
1.6B/S 结构
1.7Vue.js 技术
1.8基于用户收藏的协同过滤算法
02系统功能模块
亮点(爬虫【食品安全网站】、协同过滤算法推荐、数据预测、Echarts可视化)
1、数据管理:爬虫信息列表展示。
2、数据存储:mysql数据库。
3、可视化分析:各种数据分析统计后图表大屏展示。
4、数据分析:根据hadoop大数据技术进行数据分析
03图片展示











04代码展示
/**
* 协同算法(基于用户收藏的协同算法)(交流学习+vx:S20231025S )
*/
@RequestMapping("/autoSort2")
public R autoSort2(@RequestParam Map<String, Object> params,CaipinxinxiEntity caipinxinxi, HttpServletRequest request){
String userId = request.getSession().getAttribute("userId").toString();
Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());
List<StoreupEntity> storeups = storeupService.selectList(new EntityWrapper<StoreupEntity>().eq("type", 1).eq("tablename", "caipinxinxi"));
// 创建协同过滤对象
UserBasedCollaborativeFiltering filter = new UserBasedCollaborativeFiltering();
// 为指定用户推荐物品
String targetUser = userId;
int numRecommendations = limit;
List<String> recommendations = filter.recommendItems(storeups, "userid", "refid", userId, numRecommendations);
// 输出推荐结果
System.out.println("Recommendations for " + targetUser + ":");
for (String item : recommendations) {
System.out.println(item);
}
EntityWrapper<CaipinxinxiEntity> ew = new EntityWrapper<CaipinxinxiEntity>();
ew.in("id", String.join(",", recommendations));
if(recommendations!=null && recommendations.size()>0 && recommendations.size()>0) {
ew.last("order by FIELD(id, "+"'"+String.join("','", recommendations)+"'"+")");
}
// 根据协同结果查询结果并返回
PageUtils page = caipinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caipinxinxi), params), params));;
List<CaipinxinxiEntity> pageList = (List<CaipinxinxiEntity>)page.getList();
if(recommendations!=null && recommendations.size()>0 && pageList.size()<limit) {
int toAddNum = limit-pageList.size();
ew = new EntityWrapper<CaipinxinxiEntity>();
ew.notIn("id", recommendations);
ew.orderBy("id", false);
ew.last("limit "+toAddNum);
pageList.addAll(caipinxinxiService.selectList(ew));
} else if(pageList.size()>limit) {
pageList = pageList.subList(0, limit);
}
page.setList(pageList);
return R.ok().put("data", page);
}
更多推荐

所有评论(0)