同步操作将从 极客时间/极客时间-Flink核心技术与实战 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
系统主要工作流程:
用户登录/注册系统。
用户对商品进行评分。
评分数据通过 Kafka 发送到推荐模块的实时推荐任务中。
系统执行实时推荐任务,并且将数据存储到 hbase 的 rating 和 userProduct 表中。实时任务包括:实时 topN 以及 基于用户行为推荐。
实时 topN 将计算结果存储到 hbase 的 onlineHot 表中,基于用户行为推荐将计算结果存储到 hbase 的表 onlineRecommend 中。
web 端通过查询 hbase 获取相关模块所需数据并展示结果。
共有四个模块:
展示商品详细信息
看过该商品的人还看了:基于 itemCF 进行推荐
开发环境: IDEA + Maven + git + windows && wsl
**软件架构:**flink + hbase + kafka + mysql + redis
开发指导: flink 的计算任务都存放在 task 包下,DataLoader 为加载数据任务,OfflineRecommender 为离线推荐任务, OnlineRecommender 为实时推荐任务。以模块为单位阅读代码。
实时推荐:
“ONLINE_PREFIX_” + userId
userProduct
中查询用户历史评分商品列表。productId
从 hbase 表 itemCFRecommend
表中查询相关的商品列表对所有时间用户评分的商品根据评分次数进行逆序排序,选出热门商品。
rating
表加载到内存中,根据 productId group,并且统计出现次数根据商品评分均分逆序排序,
采用 flink timeWindow
对过去一个小时的数据进行排序,选出热门的商品。时间窗口每五分钟滑动一次。
基于物品推荐 (itemCF)
消费 kafka topic 为 rating
的数据,并且将数据存储到 hbase rating
表中,为了保证数据的唯一性rowKey
格式为:userId_productId_timestamp
开发环境: IDEA + Maven + git + windows && wsl(ubuntu 20.4)+ postwomen
技术架构: Springboot + hibernate + mysql + hbase
开发指导: Controller 模块是后端的核心,从 restFul api 入手。
项目架构:
开发环境: VScode + nodejs + windows && wsl
技术架构: Vue + typescript + element-ui
共有两张表,一个是 product
用于存储商品的详细信息,另一个是 userEntity
用于存储用户信息。
建表 sql 脚本在 recommendation/src/main/resources/mysql.sql
中
建表语句在 recommendation/src/main/resources/hbase.txt
中
商品信息存储在recommendation/src/main/resources/product.csv
文件里,我们运行一个 flink 任务将数据装载到 mysql 中。对应的表是我们之前创建的 product
表
启动 flink ,运行 recommendation/.../task/DataLoader/DataLoaderTask.java
商品信息存储到 mysql 中
启动 springboot 后端项目
启动 vue 前端
启动实时推荐任务
离线任务定时启动
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。