基于分布式数据库集群的大数据职位信息统计

您所在的位置:网站首页 行业统计代码查询网站 基于分布式数据库集群的大数据职位信息统计

基于分布式数据库集群的大数据职位信息统计

2023-06-05 10:08| 来源: 网络整理| 查看: 265

学校委托你建设新的职业指导数据统计分析系统,以便及时让学生了解当前就业趋势。经过一番调研,你发现各招聘网站的职位信息多样,即使同一个网站的职位信息往往也具有多变的数据结构。这种情况下,建立传统的关系数据库进行数据存储和分析统计颇为不便。于是你决定选择MongoDB搭建数据非关系型数据库,这样通过爬虫采集的招聘职位信息可以直接存储而不需要受限于表结构。 为了完成此项目,请完成以下任务: 任务一:该系统拟选择MongoDB作为分析数据库,并采用分布式集群的架构以获得更好的数据安全、高可用性以及性能保障。下图为MongoDB分布式集群部署规划图,请根据该图搭建一个MongoDB分布式集群: 在这里插入图片描述 注意: 分片副本集名称为xx0,xx1, 配置副本集名称为xxconfig,其中xx为你的姓名拼音首字母。

任务二:为了验证数据分布情况及进行统计分析程序开发,请创建一个MongoDB测试数据库,数据库名为你的姓名拼音首字母_学号,并请自行选择片键创建一个分片集合xx(你的姓名拼音首字母),需满足数据均匀分布的要求。测试数据已经写入了附件的load_jobs.js脚本,请补完该脚本并将测试数据加载到jobs集合。请查看集合数据熟悉数据文档结构,并查看数据的分布状况。

任务三:请编写常用操作的MongoDB Shell命令/脚本: (1) 列出数据中重庆的所有区县名称 (2) 查询月薪8000及以上的职位信息:“公司”,“招聘岗位”,“薪资” (3) 查询学历要求不低于"硕士"且提供"五险一金"和"周末双休"的重庆"公司"、“招聘岗位”、“上班地址”、“学历"和"福利标签”。 (4) 将"工作经验-下限"要求为0的改为{“工作经验”:“不限”} (5) 统计不同“学历”要求的总招聘人数,从多到少排列。 (6) 统计各个城市各个行业的职位数量,以城市和职位数量多少排序

任务一:MongoDB 分布式集群关键配置信息截图(启动参数文件、初始化参数文件、启动命令等)

配置文件: 在这里插入图片描述 js脚本文件: 在这里插入图片描述 .bat脚本: 在这里插入图片描述 在这里插入图片描述 MongoDB 分布式集群启动状态截图 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

任务二:MongoDB分布式集群分片管理(截图)

开启数据库分片: 在这里插入图片描述 查看状态: 在这里插入图片描述 创建分片集合:(选择片键字段为职位编号) 在这里插入图片描述 MongoDB 分布式集群数据导入与分片状态查询(截图) 导入数据: 在这里插入图片描述 查看状态: 在这里插入图片描述 查看分片数据库统计信息: 在这里插入图片描述 法二:(使用Navicat导入数据)

// ---------------------------- // 查看分片集群状态 // ---------------------------- db.stats() // ---------------------------- // 创建数据库 abc_2020000000 // ---------------------------- use zmj_2020444781 // ---------------------------- // 开启数据库分片 // ---------------------------- sh.enableSharding("zmj_2020444781") // ---------------------------- // 创建分片集合 // ---------------------------- sh.shardCollection("zmj_2020444781.zmj",{"职位编号":"hashed"}) // ---------------------------- // 导入数据(data) // ---------------------------- load("load_jobs.js") // ---------------------------- // 查看数据分片状态 // ---------------------------- sh.status()

在这里插入图片描述 使用Navicat查看状态: 在这里插入图片描述

任务三:程序代码及运行结果截图: (1)列出数据中重庆的所有区县名称 // ---------------------------- // (1)列出数据中重庆的所有区县名称 // ---------------------------- db.zmj.distinct("所在地.区县")

在这里插入图片描述 在这里插入图片描述

考虑到存在重复的区县,现将其去重: 在这里插入图片描述 在这里插入图片描述

(2)查询月薪8000及以上的职位信息:“公司”,“招聘岗位”,“薪资” // ---------------------------- // (2)查询月薪8000及以上的职位信息:"公司","招聘岗位","薪资" // ---------------------------- db.zmj.find({"$or":[{"薪资.类型":"千/月","薪资.下限":{"$gte":8}},{"薪资.类型":"万/月","薪资.下限":{"$gte":0.8}},{"薪资.类型":"万/年","薪资.下限":{"$gte":9.6}}]},{"_id":0,"公司":1,"招聘岗位":1,"薪资":1})

首先查看薪资类型有几种: 在这里插入图片描述 月薪8000=8千/月=0.8万/月=9.6万/年 在这里插入图片描述 在这里插入图片描述 语句有些多尝试用一条语句表达: 在这里插入图片描述

(3)查询学历要求不低于"硕士"且提供"五险一金"和"周末双休"的重庆"公司"、“招聘岗位”、“上班地址”、“学历"和"福利标签”。 // ---------------------------- // (3)查询学历要求不低于"硕士"且提供"五险一金"和"周末双休"的重庆"公司"、"招聘岗位"、"上班地址"、"学历"和"福利标签"。 // ---------------------------- db.zmj.find({"$and":[{"学历":{$in:["硕士","博士"]}},{"福利标签":"周末双休"},{"福利标签":"五险一金"},{"所在地.城市":"重庆"}]},{"_id":0,"公司":1,"招聘岗位":1,"上班地址":1,"学历":1,"福利标签":1})

查一下表里的学历 在这里插入图片描述 结合常识易得不低于硕士学历的即为硕士与博士学历。 查一下福利标签(防止有漏网之鱼) 在这里插入图片描述 发现有与“周末双休”类似的,例如双休,周末休息等,但在这里均不认为等同于周末双休 在这里插入图片描述 组合成一条语句: 在这里插入图片描述

(4)将"工作经验-下限"要求为0的改为{“工作经验”:“不限”} // ---------------------------- // (4)将"工作经验-下限"要求为0的改为{"工作经验":"不限"} // ---------------------------- db.zmj.update({"工作经验.下限":0},{$set:{"工作经验":"不限"}},{multi:true})

给表格里的工作经验排序后发现存在null值 在这里插入图片描述 那么这个null值需要改吗?这里提供两种方案。 不更改null值 在这里插入图片描述 如果需要更改null值的话请执行以下语句: 在这里插入图片描述

(5)统计不同"学历"要求的总招聘人数 // ---------------------------- // (5)统计不同"学历"要求的总招聘人数,从多到少排列。 // ---------------------------- db.getCollection("zmj").aggregate([{$group:{_id:"$学历","总招聘人数":{"$sum":"$所招人数"}}}])

此三条命令的执行结果一致 在这里插入图片描述

(6)统计各个城市各个行业的职位数量,以城市和职位数量多少排序 // ---------------------------- // (6)统计各个城市各个行业的职位数量,以城市和职位数量多少排序 // ---------------------------- db.getCollection("zmj").aggregate([{$group:{_id:{城市:"$所在地.城市",行业:"$所属行业"},"数量":{"$sum":"$所招人数"}}},{$sort:{"数量":-1}}])

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3