基于Hadoop平台的岗位推荐系统的设计与实现
2022-06-25温晓宇
摘要:近年来,随着我国网络信息技术的快速发展,个性化推荐系统的应用范围也越来越广,为人们的工作和生活也带来了很多的便捷。许多公司都开始在网上发布招聘信息,人们也在网络上发布各种各样的求职信息,招聘求职的信息出现了大幅度增长,单一的岗位搜索功能已经没有办法满足招聘公司和求职者多元化的需求。该文对于岗位平台推荐系统进行深入分析,针对传统职位推荐系统中存在的问题,引入全新的过滤推荐技术,设计出个性化岗位推荐系统,以供借鉴。
关键词:Hadoop岗位推荐系统系统架构系统设计
中图分类号:TP311.1文献标识码:A 文章编号:1672-3791(2022)07(a)-0000-00
在互联网背景下,应用系统的规模也越来越大,给人们的生活带来了比较大的改变。但是也面临着一定的矛盾,比如信息量暴增但是人们的选择能力是有限的,求职者如何从各种各样的招聘网站中,找到合适的工作岗位招聘信息,这也成为了岗位推荐系统研究的主要方向,这不仅能传递出企业的价值,获得了更多的收益,而且在一定程度上也为求职者提供了捷径,实现双赢共赢的目的。
1岗位推荐系统的概述
在个性化时代背景下,推荐系统也逐渐成为了整个系统的重要组成部分,不再是一个简单的后台逻辑或者是函数调用,从广义上来说,推荐系统属于数据挖掘范畴,推荐服务系统也依赖一些科学的推荐算法和大量的学习数据。岗位推荐系统是一个特殊的数据挖掘系统,主要由数据收集、离线数据处理、实时在线推荐三个部分组成。
如今,就业的压力越来越大,求职者想要找到一份合适的工作很困难,因此个性化的岗位推荐系统显得更加重要,将大数据挖掘和分析技术引入招聘网站,使得招聘和求职能够更加简单、高效。要想设计出个性化岗位推荐系统,必须要完成以下目标:(1)首先一定要保障用户的隐私,收集相关客户的真实需求以及期望达到什么目的信息,在此基础上进行个性化推荐。(2)不仅要保障用户的正常使用,而且还要处理海量的行为日志数据,深入了解用户的兴趣爱好,为在线实时推荐提供良好的信息数据支撑。(3)可以根据用户的实际行为来分析具体的需求,给用户推荐合适的岗位和应聘者[ ]。
2岗位推荐系统的架构
基于Hadoop平台设计的岗位推荐系统的整体架构主要分为4大模块:首先是数据采集与传输,通过JS来收集求职者的行为数据,将历史行为数据都上传到日志中,利用日志采集系统Flume来读取用户的个人行为日志,将读取到的信息传输到Kafka中,进行相关的离线数据分析计算工作。其次是实时计算操作,主要功能是在线推荐,求职者可以从系统Kafka中读取相关的数据,再利用Stom来计算相关的数据,然后对运算出来的结果进行深入分析处理,主要通过Hadoop平台,将所获得的数据存入数据库,然后根据软件分析的用户职位特征存入数据库。最后是对外数据服务,主要是根据用户提供的实际信息,将用户与岗位信息联系起来,为用户推荐与其相匹配的岗位[ ]。
求职用户的日志技术不仅包括用户信息、教育学习经历、期望薪资等,通过对这些数据的分析来得到一个用户匹配职位的大致范围,包括感兴趣的职位、不感兴趣的职位等,再将用户职位特征数据存入数据库。岗位推荐系统主要是为企业和求职者提供个性化的服务,具体来说,(1)可以根据客户是否注册来分为已注册用户和游客用户,如果是已注册用户就可以根据用户的历史浏览来推算用户的求职意向;对于游客客户来说,可以将其个人注册信息,包括教育经历、工作经验、期待薪资等作为求职意向。(2)内容过滤,在获取求职者的求职意向信息后,从职位库中筛选出适合求职者求职意向的职位作为第一推荐。(3)人口统计推荐,收集各个候选职业和求职者信息,将求职者的求职意向和岗位要求来计算相似度,将相似度前10的工作岗位推荐给求职者,完成第二次推荐任务。(4)协同推荐,求职者看到系统的职位推荐后,浏览自己感兴趣的岗位,然后向企业投递自己的建立,当求职者看到一个自己感兴趣的岗位时,就可以一键向公司投递自己的简历,系统会自动记录用户的这一行为,主动为用户寻求相似度大于或者等于1%的岗位,计算相关候选职位的逻辑回归分数,找出合适的岗位,推荐给求职者,完成第三次推荐任务。
岗位推荐系统主要包括数据收集、离线数据处理以及在线实时推荐三个系统,再结合具体的求职网站制定一套完整的流程,每一个系统都有各自独立的功能,又相互依赖。本系统的功能模块包主要包括公共基础库、数据操作路、MapReduce算法库、用户行为收集接口程序等[ ]。
3岗位推荐系统的设计
3.1用户–职位模型设计
在个性化岗位推荐系统中,用户模型的设计是核心,对于推荐系统的准确率和有效性有着极其重要的影响。因此对于个性化岗位推荐系统来说,构建用户模型尤为重要,我们可以知道,求职者职位特征主要包括基础信息和行为信息,其中基础信息主要有求职者的教育经历以及工作经验等,行为特点主要包括求职者关注过哪些工作岗位、向哪些工作岗位投递过自己的简历,根据这些信息生成相关的求职日志记录。首先是求职者模型,根据求职者在系统上的记录可以将求职者的意向分为原来的求职意向和全新的意向,如果求职者的求职方向发生了一定的变化后,可以在自己的岗位简介页面修改自己的信息,将修改后的现象作为新的求职意向,根据新信息为其推荐合适的工作岗位。对于首次登录会话的求职者,根据人口统计学技术为求职者提供合适的工作岗位,如果求职者申请职位后触发的推荐请求,根据协同推荐技术为求职者推荐合适的工作岗位。
3.2数据收集模块设计
数据收集模块是构建用户兴趣模型、實现职位推荐系统的基础,来收集各类求职网站用户的行为数据,分为线上Flume挖掘求职用户行为数据和离线上传信息数据到HDFS系统,将收集到的JSON数据库存在Kafka中,用户的行为日志也会自觉同步到HDFS中。具体包括以下几个步骤:Apache Server将求职用户的行为数据记录在日志中,主要包括用户注册信息、浏览岗位信息、申请岗位信息等,然后由Fulme系统采集实时数据,将其保存在Kafka中,将LocalLogFile里的文件上传到HDFS系统中[ ]。然后实时处理用户的行为数据,将所有的数据进行有效的离线计算。
日志的读取和传输主要是通过Source和Sink组件来完成的,两者之间通过Channel来实现交互的目的。日志读取的流程如下:创建日志文件目录,将新建或者未读取的日志文件放到待读取队伍中,按时间顺序由远到近的顺序进行排列,而且在读取日志的时候,会自动将日志转成JSON的格式,为后续的数据处理工作奠定一个良好的基础。到用户读取完日之后,系统会自动将JSON格式的数据保存在Channel中,用戶可以读取下一条数据。然后再利用KafkaSink组件来实时传输数据信息,当Kafka检测到新数据的时候,系统会自动初始化Producer组件,根据userld值对于数据信息进行筛选分类,方便在计算用户会话,能够按照时间顺序进行排列。
数据收集模块主要有两个接口,一个是数据读取接口,需要设计Apache日志类、日志返回结果值类、实时时间读取类等,另外一个是数据传输接口,需要设计行为数据缓存类、Json工具类等。数据收集功能交互的步骤如下:Apache Server收集用户的数据信息,将其记录在LocalLogFile中,再由DirectoryTailSource来实时监控和关注LocalLogFile中数据信息,将所有的数据信息保存在Channel中,由KafkaSink读取数据信息储存在Kafka中,还有不经过处理的文件不会上传到HDFS中。数据收集功能的组件主要有实时事件读取、数据分区、日志分析等[ ]。
3.3离线数据处理模块设计
该系统的数据离线系统处理模块实在Hadoop平台上实现的,Hadoop是目前最受关注的分布式框架之一,其主要包括MapReduce和HdFS等,数据处理模块是岗位推荐系统在线实时推荐服务重要的数据支撑,外部通过计算请求并读取数据收集信息,内部通过计算接口将各类算法模型运行在Hadoop平台上,再由MapReduce和HdFS进行数据的分析与计算,将计算出来的数据储存在数据库里。该系统运行算法的实质是分布式框架Hadoop平台,求职者的行为以日志的形式储存在HDFS上,在经过PigLatin进行清洗储存在Hive里,随后再利用MapReduce程序来处理相关的数据,分析用户模型,将职位模型储存在HBase中,为后续的职位推荐奠定一个良好的基础[ ]。还有离线数据处理模块处理的步骤主要包括预处理和用户职位模型,以收集到的用户行为数据为基础,利用特定的算法来计算出求职用户的特征。首先,数据处理模块接口收到计算请求之后,会将计算请求移交给总控模块,然后总控模块会根据计算请求向用户模型管理管理模块获得相关的算法后,将任务提交到Hadoop集群上,由专门的程序来读取数据,MapReduce的任务也正式开始运行,当MapReduce计算完成后,成功返回初始界面,整合计算流程也随之结束。离线数据处理的功能组件主要包括日志清洗、会话计算、兴趣度计算等。
3.4在线实时推荐模块设计
该系统的在线实时推荐模块借助于Storm平台,Storm是一个分布式实时计算机数据处理系统,能够对求职用户的实时行为进行有效的分析,结合求职用户离线计算的数据信息,为用户推荐符合求职意向的岗位。在线实时推荐模块主要包括控制器和工作器,控制器是Storm中的一个Tooology,专门负责求职用户的数据信息,再将数据信息的内容进行分类,给工作器分配不同的任务,主要功能在于实时接收、实时管理求职用户的行为数据,当行为管理器检测到新用户的时候,系统会自觉分配相关的推荐任务,由另一个程序负责给用户反馈信息。工作器是Storm的很多个Bolt组成的程序,主要负责分析求职者的行为数据,再结合离线数据处理模块,选择合适的推荐策略为求职者提供一个合适的工作岗位,由控制器来反馈求职者的数据信息,主要功能包括分析求职者的实时行为、人口统计学、协同推荐技术来过滤岗位信息,并随时更新岗位数据库信息。控制器的主要功能类有主控制类、实时数据接受类、日志类等、工作器的主要功能类有实时计算推荐类、候选职位操作类、模型推荐类等,在线实时推荐功能交互步骤如下:首先RecommendationTpoplogy启动程序来接受用户行为数据,TransManagerBolt将未处理的用户行为数据添加到数据处理队列,再由RealTimeMainBolt对用户的行为数据进行分析,通过getRecList方法来获取职位推荐表,再通过RecommendationDao对用户行为日志数据按照特定的推荐策略来更新岗位推荐列表,推荐完成后,返回初始页面等待新任务[ ]。在线实时推荐功能组件主要有主控件(RecommendationTpoplogy)、实时数据接受件(ApacheLogSpout)、用户行为属性(UserBehavior)等。
3.5数据库设计
系统的需要储存的数据比较多,岗位推荐中需要设计数据库,因此数据库设计分为HBase和Hive的表结构设计,需要分享的信息主要有用户信息、职位信息等,比如将职位浏览记录储存在Hive数据库,剩下的信息数据储存在HBase数据库中,用户的职位信息主要包括浏览岗位的时间、岗位的类型、期望薪资等,求职者浏览职位的信息主要包括职位性质、工作经验、年龄,性别等这类数据储存在Hive数据库中;求职者兴趣度表主要包括工作年限、期望月薪等;用户推荐表包括日期、职位等信息被储存在Hbase数据库中。
4结语
综上所述,在大数据时代背景下,求职者通过网站来获取岗位信息的频率越来越高,人才信息和岗位信息出现爆炸式增长的现象,从Hadoop平台的角度出发来设计岗位推荐系统,能够让求职者从海量的招聘信息中找到合适的工作,给求职者带来更多的便捷,而且岗位推荐系统的运行也能够更加高效、便捷。
参考文献
[1] 曹佳.基于文本语义相似度的企业招聘系统的设计与实现[D].曲阜:曲阜师范大学,2020.
[2] 陆佳雯,武频,雷志丹,等.基于广义Choquet积分的职位推荐算法[J].计算机工程与设计,2021,42(1):206-211.
[3] 李文海,许舒人.基于Hadoop的电子商务推荐系统的设计与实现[J].计算机工程与设计,2014,35(1):130-136,143.
[4] 陈军.基于大数据的ZQ就业推荐平台设计及运维管理机制研究[D].广东:广东工业大学,2018.
[5] 顾军林,刘玮玮,陈冠宇.基于Hadoop平台的岗位推荐系统设计[J].现代电子技术,2019,42(20):123-127.
[6] 王杰.基于Hadoop的农业种植信息推荐系统的构建与研究[D]. 郑州:华北水利水电大学, 2020
[7] 韦美峰.Hadoop平台下主题搜索引擎的设计与实现[D].西安:西安电子科技大学,2018
基金项目:广西中青年课题《基于大数据的高校就业决策系统的设计与开发》(项目编号:2021KY1461)。
作者简介:温晓宇(1981—),男,硕士,讲师,研究方向为计算机网络应用,大数据开发、移动应用开发等。