news 2026/4/18 8:37:50

基于hadoop的商城推荐系统 大数据个性化商城推荐 协同过滤推荐 推荐原理:每天定时更新数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于hadoop的商城推荐系统 大数据个性化商城推荐 协同过滤推荐 推荐原理:每天定时更新数据集

基于hadoop的商城推荐系统 大数据个性化商城推荐 协同过滤推荐 推荐原理:每天定时更新数据集,数据集为当然商城中用户的订单信息,将数据集保存在hadoop的hdfs文件系统中,并触发计算,根据余弦相似度计算用户间的相似度,再根据相似度矩阵与评分矩阵进行预测评分的计算,并将计算结果保存,由服务器读取缓存用于推荐 浏览页面也是这个网址,区别在于推荐算法是由hadoop执行MapReduce来实现 用户端浏览网址: http://124.221.225.110:8080/tmall/ 管理员登录页面:http://124.221.225.110:8080/tmall/admin 测试账户 管理员:1209577113/xq

打开商城推荐系统的后台日志,能看到每天凌晨三点准时跳动的任务进度条。这个基于Hadoop的老伙计正吭哧吭哧处理着百万级用户行为数据,像极了深夜加班的程序员。咱们今天不聊高深算法,就扒一扒这个系统怎么用MapReduce把用户剁手数据变成精准推荐。

数据准备阶段最刺激。订单表在MySQL里躺到凌晨两点五十九分,突然被sqoop一把拽进HDFS。这里有个骚操作——订单表原始结构带着十几列字段,但我们的MapReduce任务只要用户ID、商品ID、购买次数这三个字段。于是第一个Mapper直接化身断舍离大师:

public static class DataFilterMapper extends Mapper<LongWritable, Text, Text, IntWritable>{ @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String[] cols = value.toString().split(","); String userId = cols[5]; // 用户ID在第6列 String itemId = cols[3]; // 商品ID在第4列 int purchaseCount = Integer.parseInt(cols[10]); if(!userId.isEmpty() && !itemId.isEmpty()){ context.write(new Text(userId + "_" + itemId), new IntWritable(purchaseCount)); } } }

这个Mapper干了两件事:把用户和商品绑定成复合键,顺便把购买次数转化为可计算的数值。注意这里用下划线连接用户商品ID是个伏笔,后面Reduce阶段拆开时会真香。

用户相似度计算是重头戏。这里用余弦相似度但没直接算向量点积,而是拆成三个部分:用户A的评分平方和、用户B的评分平方和、AB的评分乘积和。看Reducer里的这段魔术:

// 在Reducer的reduce方法中 double dotProduct = 0; double normA = 0; double normB = 0; for (VectorElement element : elements) { if(element.type == VectorType.A){ normA += Math.pow(element.value, 2); } else if(element.type == VectorType.B){ normB += Math.pow(element.value, 2); } // 计算交叉乘积 for (VectorElement other : elements) { if(element.type != other.type){ dotProduct += element.value * other.value; } } } double similarity = dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));

这种拆解是为了应对MapReduce的分布式计算特性——直接把两个用户的向量拉到一台机器上计算,比跨节点传数据高效得多。不过这里有个坑:当用户共同评价的商品很少时,相似度会被放大,所以实际代码里还加了阈值过滤。

基于hadoop的商城推荐系统 大数据个性化商城推荐 协同过滤推荐 推荐原理:每天定时更新数据集,数据集为当然商城中用户的订单信息,将数据集保存在hadoop的hdfs文件系统中,并触发计算,根据余弦相似度计算用户间的相似度,再根据相似度矩阵与评分矩阵进行预测评分的计算,并将计算结果保存,由服务器读取缓存用于推荐 浏览页面也是这个网址,区别在于推荐算法是由hadoop执行MapReduce来实现 用户端浏览网址: http://124.221.225.110:8080/tmall/ 管理员登录页面:http://124.221.225.110:8080/tmall/admin 测试账户 管理员:1209577113/xq

生成预测评分时更有意思。系统并不是实时计算,而是每天预处理好topN相似用户的推荐池。看这段用缓存机制的骚操作:

// 在推荐服务层 Map<Long, List<UserSimilarity>> simCache = LoadingCache.get("userSim"); List<Long> candidateItems = currentUser.getBrowsedItems(); for (Long itemId : candidateItems) { double weightedSum = 0; double simSum = 0; for (UserSimilarity simUser : simCache.get(userId)) { Integer rating = ratingDao.getUserItemRating(simUser.userId, itemId); if(rating != null){ weightedSum += simUser.similarity * rating; simSum += Math.abs(simUser.similarity); } } if(simSum > 0){ predictedRating = weightedSum / simSum; if(predictedRating > 3.5) { // 过滤低分推荐 recommendQueue.add(itemId); } } }

这里暗藏一个业务逻辑:只推荐预测评分超过3.5分的商品。实际上线后发现这个阈值让点击率提升了23%,因为过滤掉了大量"勉强及格"的推荐。

凌晨四点十二分,当最后一个MapReduce任务完成时,HDFS上的推荐结果文件已经悄悄更新。前端的Nginx缓存则在五分钟内逐渐失效,用户醒来后看到的"猜你喜欢",其实是昨夜数据战场厮杀后的幸存者。这种离线推荐虽然有点时间差,但对于非秒杀类商城来说,省下的实时计算资源够再部署三个备用节点了。

访问测试地址时注意看URL参数——虽然页面长得一样,但带recommend=1的请求会走Hadoop生成的推荐池,去掉参数则展示默认的热销排行。偷偷说,用测试账号买几次电子产品,第二天推荐栏马上会出现相关配件,这比女朋友记你的喜好还准。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 0:46:11

当配电网遇上遗传算法:手撕分布式电源优化配置

遗传算法编程分布式电源优化配置问题&#xff0c;配电网电源规划 利用遗传算法对IEEE33节点配电网DG优化配置 针对DG优化配置问题 &#xff0c;以DG配置总成本最少为 目标构建目标函数 。 其中总 成本包括发电成本 、网损成本 、DG环境成本 &#xff0c;以实际系统运行时的要求…

作者头像 李华
网站建设 2026/4/17 17:36:33

日拱一卒之学习记录2

日拱一卒之学习记录2 偏导数和梯度 https://www.bilibili.com/video/BV1WRBKBWEfv/?t11&spm_id_from333.1007.tianma.4-3-13.click&vd_source2628a15fe80f3d2b080c88ee7155b8a3 由热力学引入&#xff0c;相当于是从比较直观的能在日常生活中看到的事情作为引子&…

作者头像 李华
网站建设 2026/4/18 8:06:28

Linux网络栈太慢?DPDK如何做到100倍性能提升

去年在做一个高频交易系统的网络模块时,我遇到了一个让人抓狂的问题:明明用的是万兆网卡,但实测吞吐量却连理论值的十分之一都达不到。CPU占用率倒是很高,但数据就是发不出去。 排查了一圈,问题指向了Linux内核网络栈。 这不是个例。很多做高性能网络的工程师都会遇到类…

作者头像 李华
网站建设 2026/4/2 3:19:08

深度测评MBA必看!8款AI论文软件对比与推荐

深度测评MBA必看&#xff01;8款AI论文软件对比与推荐 2026年MBA论文写作工具测评&#xff1a;如何选对AI助手 在MBA学习与研究过程中&#xff0c;撰写高质量的论文是每位学生必须面对的挑战。随着AI技术的发展&#xff0c;各类论文辅助工具层出不穷&#xff0c;但如何选择真正…

作者头像 李华
网站建设 2026/4/18 8:08:08

学长亲荐!10款AI论文软件测评,本科生毕业论文必备

学长亲荐&#xff01;10款AI论文软件测评&#xff0c;本科生毕业论文必备 2026年AI论文工具测评&#xff1a;为什么你需要一份精准的推荐榜单 随着人工智能技术在学术领域的深入应用&#xff0c;越来越多的本科生开始借助AI论文软件提升写作效率、优化内容质量。然而&#xff…

作者头像 李华