目录一、项目开场二、项目定位三、技术路线四、数据采集与预处理五、Hadoop 分析链路六、Web 端功能七、可视化展示八、薪资预测九、运行测试每文一语有需要本项目的代码、文档、完整资源或者需要部署调试的朋友可以私信博主。一、项目开场计算机类岗位每天都会在招聘平台上产生大量信息岗位名称、薪资区间、城市分布、学历要求、工作经验、企业类型、公司规模、技能标签等字段看起来只是一个个招聘卡片实际上都能反映就业市场的真实变化。单纯浏览网页只能看到零散岗位很难判断不同城市的薪资差距、哪些技能更热、什么经验层次需求更多也很难给求职定位和人才培养提供稳定参考。这个项目围绕“计算机岗位招聘数据”做了一套完整的数据分析与展示平台。开发时我没有只停留在爬取数据和画几张图而是把数据采集、清洗、Hadoop存储、Hive多维统计、Sqoop结果同步、MySQL在线查询、Web可视化、CatBoost薪资预测和后台管理串成一条完整链路。最终呈现出来的是一个可以登录使用、可以查看大屏、可以预测薪资、也可以在后台维护岗位数据的应用系统。图1系统整体处理流程展示二、项目定位平台主要解决两个问题一是把分散在招聘页面中的岗位信息整理成结构化数据便于按照城市、学历、经验、企业性质、岗位关键词等维度统计二是把统计结果做成直观的图表和动态大屏方便用户快速把握计算机岗位市场的整体情况。对学生来说可以看到不同技术方向的薪资水平和技能热度对教学或实训场景来说这套流程也能作为大数据工程、数据仓库、数据可视化和机器学习综合项目的案例。系统角色分为普通用户和管理员。普通用户进入平台后主要使用可视化分析和薪资预测功能管理员则负责岗位数据维护、用户管理和后台概览。这样的角色划分比较适合项目演示前台展示数据价值后台展示系统管理能力中间通过数据库和接口连接起来形成一个完整的应用闭环。图2系统功能模块设计三、技术路线技术选型上后端以Python生态为主。数据采集部分使用Selenium配合浏览器驱动模拟访问招聘页面解析岗位卡片中的字段信息预处理部分使用pandas、numpy完成字段清洗、薪资转换、缺失值补全和异常值处理大数据处理部分使用Hadoop生态依次涉及HDFS、Flume、Hive和Sqoop在线应用部分使用Flask搭建Web服务结合MySQL提供快速查询能力前端图表采用ECharts、Pyecharts等可视化组件薪资预测部分引入CatBoost回归模型并通过joblib将训练好的模型保存后接入Web页面。整体设计思路比较清晰爬虫负责拿到数据清洗脚本负责把原始字段变成可计算字段Hadoop负责承接批量数据Hive负责按主题生成指标表Sqoop把分析结果同步到MySQLFlask再把这些结果以接口形式交给前端页面。这样处理后Hadoop主要承担离线计算任务MySQL主要服务在线查询前端页面不用直接面对复杂的大数据环境。图3 Hadoop招聘数据处理流程四、数据采集与预处理数据采集围绕多个代表性城市和多类计算机岗位关键词展开例如人工智能、深度学习、自然语言处理、图像识别、前端开发、后端开发、全栈开发、Java、Python、Golang等方向。采集过程中程序按城市和关键词组合生成访问链接逐页解析招聘卡片提取岗位名称、公司名称、薪资范围、所在城市、工作经验、学历、企业类型、公司人数、任职要求、所属行业、HR信息和回复速度等字段。原始招聘数据最大的麻烦不是字段少而是格式不统一。薪资可能写成“8K-15K”也可能写成“1万-1.5万”有的还带“13薪”“15薪”等发放信息文本字段中可能混有空格、逗号、特殊符号和emoji行业和企业性质字段也可能出现层级过深或混入公司规模的情况。为了让后续分析稳定运行预处理环节把薪资统一换算为月薪口径对缺失字段做合理补全对异常薪资和无法计算的样本做过滤并统一字段命名最终输出适合导入Hadoop的CSV文件。五、Hadoop 分析链路清洗后的岗位数据通过Flume自动传输到Hadoop环境中。Flume采用Source、Channel、Sink三层架构Source负责监听本地目录Channel负责缓存和容错Sink负责把数据写入Hive或HDFS。这里使用文件型Channel主要是为了提升传输可靠性即使传输过程中服务中断已经读取但尚未写入的数据也不会轻易丢失。图4 Flume数据采集架构图5 Hive分析结果导出流程数据进入Hive后会在基础明细表之上构建多个主题分析表。主题表覆盖岗位薪资排名、公司平均薪资、工作经验需求、学历要求、企业性质、公司规模、城市薪资、技能热度等维度。这样做的好处是前端展示时不需要实时扫描全部明细数据只要读取已经统计好的结果表即可。对于图表应用来说预计算指标比临时聚合更稳定也更适合后台管理和可视化大屏。Hive更适合离线分析而Web系统需要更快的查询响应所以项目中通过Sqoop将Hive中的结构化统计结果导入MySQL。MySQL承担在线查询和后台管理数据源的角色Flask接口读取MySQL后把结果转成前端需要的JSON格式页面再用ECharts完成渲染。六、Web 端功能Web系统采用Flask框架开发通过蓝图机制把用户、管理员、数据管理、可视化和预测模块拆开便于维护。用户访问系统时首先进入登录页面系统根据账号类型进入不同入口。普通用户可以查看分析大屏、浏览多维图表、使用薪资预测管理员可以进入后台概览页查看数据总量、用户变化趋势和最新记录并对岗位数据进行新增、编辑、删除和筛选。图6用户登录界面展示图7管理员后台概览展示后台数据管理模块以表格为核心支持分页、条件筛选、弹窗新增、编辑更新和删除操作。岗位数据字段较多如果全部堆在页面上会显得杂乱因此界面使用筛选条件和弹窗表单来降低操作复杂度。管理员可以按学历、行业、企业类型等条件快速定位数据也可以在演示或维护时补充新的岗位记录。图8岗位数据管理页面展示七、可视化展示可视化模块是整个系统最直观的部分。平台围绕岗位市场设计了多个图表入口例如学历与平均薪资、企业性质与平均薪资、不同城市薪资走势、工作经验需求占比、热门技能条形图、岗位名称词云、城市薪资地图等。前端通过Ajax请求Flask接口获取数据接口再从MySQL中读取预先计算好的指标结果最终由ECharts完成柱状图、折线图、饼图、词云图和地图的绘制。动态大屏更适合做项目展示。页面上把核心指标、地区分布、岗位数量、薪资变化和技能热度放在一个屏幕里配合深色背景和动画效果看起来更像一个完整的数据监测看板。与普通表格相比大屏展示更适合在答辩、课程设计、项目路演或资源展示页面中使用。图9多维图表分析页面展示图10招聘数据可视化大屏展示八、薪资预测除了描述性统计项目还加入了薪资预测功能。招聘数据中有大量类别特征例如岗位名称、公司名称、工作经验、学历、企业性质、公司规模、任职要求、所属行业、城市和关键词等。传统模型在处理这些字段时往往需要大量编码转换而CatBoost对类别特征支持较好比较适合这类业务数据。模型训练完成后会保存为pkl文件Web应用启动时把模型加载到内存。用户在预测页面选择岗位相关信息并提交后后端按照模型训练时的特征顺序构造数据框调用模型进行推断再把预测月薪、年薪估算和薪资等级返回给前端。前端页面会显示加载动画避免用户重复提交预测完成后结果卡片以醒目的数字展示让模型推断过程更具交互感。图11薪资预测输入页面图12薪资预测结果展示九、运行测试系统完成后对注册登录、用户状态保持、数据分页查询、筛选、新增、编辑、删除、图表加载、图表切换、全屏展示和薪资预测等核心功能进行了测试。整体运行过程比较顺畅登录后刷新页面仍能保持会话状态数据列表分页和条件筛选可以正常返回结果图表鼠标悬停可以显示具体数值大屏进入全屏后可以自适应屏幕大小薪资预测接口也能在短时间内返回结果。从性能表现看普通页面请求和数据查询能够满足演示及常规使用需求可视化图表会受到数据点数量和图表类型影响但总体处于可接受范围。词云和地图这类图表计算与渲染稍复杂加载时间会比普通柱状图、折线图长一些。后续如果继续扩展可以把缓存、接口分页、异步任务和定时更新机制补充进来让系统更接近生产级数据平台。每文一语真正能落地的技术不只是跑通一段代码而是把数据、模型和业务场景连成一个可以使用的系统。