# recommend **Repository Path**: cch-bigdata/recommend ## Basic Information - **Project Name**: recommend - **Description**: 最后一个章节:推荐系统作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-20 - **Last Updated**: 2021-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 作业 针对课程中涉及到的召回阶段,多增加一种召回实现。 比如热门召回,用户期望召回 热门召回概念: 实时统计职位的投递情况,按照地区分区,找到每个地区实时投递次数最高的前20-50个职位。 用户期望召回: 召回满足用户期望地点,薪资等条件的职位 在现有架构上或者可以考虑增加新的技术框架实现此需求。 要求: ​ 描述清楚实现流程,基于哪些数据,数据如何处理分析统计,最终如何存储等 ### 热门召回: 对于热门召回,现在系统架构上面已经具备了日志采集功能写入到kafka中,通过flink实时的消费处理kafka中投递的数据。采用flink的时间窗口函数[根据实际需求定义窗口大小和滑动时间:如一个小时内5分钟输出一次地区热门的投递的职位top50],根据投递职位所在地区进行分组开窗,采集的投递数据已经包含了职位和地区信息,flink实时计算数据下层到hbase中【rowkey采用,当前统计时间戳+地区ID拼接,可以精确的查询某个时间热门岗位,也可以某个时间内某个地区的热门投递职位】。采用flink进行实时计算投递职位时,如果还需要别的维度【如职位分类】,可以在开窗前进行分组条件设置,相应的hbase的rowkey设计也进行更改。如果维度过多,也可以写入到clickhouse中,系统架构上面也采用clickhouses技术。 ### 用户期望召回: 系统采集了mysql的binlog日志写入到了kafka中,可以感知到系统上的职位变化。招聘的职位在系统上面不属于时刻修改的数据,属于大量查询检索的数据。在这个需求上面可以采用elasticsearch,es具有近实时的更新的特点。通过flink实时消费处理kafka中的职位数据,用flink做ETL工具,把数据处理好并写入到es中。通过采集用户的浏览,搜索,职位筛选条件等数据的采集,flink进行分类处理后存储到hbase中。通过spark mlib处理的TF-IDF处理采集用户的行为分类数据,从而计算出用户的偏好关键词,存储到hbase中。用户每次访问职位搜索页面,通过这些计算好的用户偏好关键词到es中进行检索职位,从而获取用户偏好数据推荐用户偏好的职位