基于分布式数据库集群的大数据职位信息统计
目录
任务一:
MongoDB 分布式集群关键配置信息截图(启动参数文件、初始化参数文件、启动命令等)
ch0的参数文件配置:
编辑 ch1的参数文件配置:
编辑chconfig的参数文件配置:
router的参数文件配置:
初始化参数文件配置:
编辑 启动命令文件配置:
启动截图:
MongoDB 分布式集群启动状态截图
任务二:
MongoDB分布式集群分片管理(截图)
MongoDB 分布式集群数据导入与分片状态查询(截图)
任务三:程序代码及运行结果截图:
(1)列出数据中重庆的所有区县名称
(2)查询月薪8000及以上的职位信息:"公司","招聘岗位","薪资"
(3)查询学历要求不低于"硕士"且提供"五险一金"和"周末双休"的重庆"公司"、"招聘岗位"、"上班地址"、"学历"和"福利标签"。
(4)将"工作经验-下限"要求为0的改为{"工作经验":"不限"}
(5)统计不同"学历"要求的总招聘人数
(6)统计各个城市各个行业的职位数量,以城市和职位数量多少排序
试题内容及要求:
学校委托你建设新的职业指导数据统计分析系统,以便及时让学生了解当前就业趋势。经过一番调研,你发现各招聘网站的职位信息多样,即使同一个网站的职位信息往往也具有多变的数据结构。这种情况下,建立传统的关系数据库进行数据存储和分析统计颇为不便。于是你决定选择MongoDB搭建数据非关系型数据库,这样通过爬虫采集的招聘职位信息可以直接存储而不需要受限于表结构。
为了完成此项目,请完成以下任务:
任务一:该系统拟选择MongoDB作为分析数据库,并采用分布式集群的架构以获得更好的数据安全、高可用性以及性能保障。下图为MongoDB分布式集群部署规划图,请根据该图搭建一个MongoDB分布式集群:
注意: 分片副本集名称为xx0,xx1, 配置副本集名称为xxconfig,其中xx为你的姓名拼音首字母。
任务二:为了验证数据分布情况及进行统计分析程序开发,请创建一个MongoDB测试数据库,数据库名为你的姓名拼音首字母_学号,并请自行选择片键创建一个分片集合xx(你的姓名拼音首字母),需满足数据均匀分布的要求。测试数据已经写入了附件的load_jobs.js脚本,请补完该脚本并将测试数据加载到jobs集合。请查看集合数据熟悉数据文档结构,并查看数据的分布状况。
任务三:请编写常用操作的MongoDB Shell命令/脚本:
- 列出数据中重庆的所有区县名称
- 查询月薪8000及以上的职位信息:"公司","招聘岗位","薪资"
- 查询学历要求不低于"硕士"且提供"五险一金"和"周末双休"的重庆"公司"、"招聘岗位"、"上班地址"、"学历"和"福利标签"。
- 将"工作经验-下限"要求为0的改为{“工作经验”:“不限”}
- 统计不同“学历”要求的总招聘人数,从多到少排列。
- 统计各个城市各个行业的职位数量,以城市和职位数量多少排序
任务一:
MongoDB 分布式集群关键配置信息截图(启动参数文件、初始化参数文件、启动命令等)
ch0的参数文件配置:
ch1的参数文件配置:
chconfig的参数文件配置:
router的参数文件配置:
初始化参数文件配置:
启动命令文件配置:
启动截图:
MongoDB 分布式集群启动状态截图
任务二:
MongoDB分布式集群分片管理(截图)
MongoDB 分布式集群数据导入与分片状态查询(截图)
任务三:程序代码及运行结果截图:
前言:后续代码均用python所编写,库的导入和数据连接放在这里(不建议大家抄我的,我上课没认真听,写不来mongdb的命令,就用python写的)
1.import pymongo
2.import pandas as pd
3.client = pymongo.MongoClient(host='localhost', port=27017)
4.db=client.ch_2020441691
5.collection=db.ch
(1)列出数据中重庆的所有区县名称
1.for i in collection.aggregate([{"$match":{"所在地.城市":"重庆"}},{"$group":{"_id":"$所在地.区县"}}]):
2. print(i)
(2)查询月薪8000及以上的职位信息:"公司","招聘岗位","薪资"
1.money=[]
2.pipeline=[{"$group":{"_id":"$薪资.类型"}}]
3.for i in collection.aggregate(pipeline):
4. money.append(i['_id'])
5.print(money)
6.pipeline=[{"$project":{"公司":1,"招聘岗位":1,"薪资":1}}]
7.for i in collection.aggregate(pipeline):
8. if i['薪资']['类型']==None:
9. pass
10. if i['薪资']['类型']=="千/月":
11. if i['薪资']['下限']>=8:
12. print(i)
13. if i['薪资']['类型']=="万/月":
14. if i['薪资']['下限']*10>=8:
15. print(i)
16. if i['薪资']['类型']=='万/年':
17. if i['薪资']['下限']*10/12>=8:
18. print(i)
(3)查询学历要求不低于"硕士"且提供"五险一金"和"周末双休"的重庆"公司"、"招聘岗位"、"上班地址"、"学历"和"福利标签"。
1.edu=[]
2.pipeline=[{"$group":{"_id":"$学历"}}]
3.for i in collection.aggregate(pipeline):
4. edu.append(i['_id'])
5.pipeline=[{"$project":{"公司":1,"招聘岗位":1,"上班地址":1,'学历':1,"福利标签":1}}]
6.keys=["公司","招聘岗位","上班地址",'学历',"福利标签"]
7.for i in collection.find():
8. if (i['学历']=="博士" or i['学历']=="硕士") and ("五险一金" in i['福利标签'] )and ("周末双休" in i['福利标签']) and i['所在地']['城市']=="重庆":
9. i=pd.Series(i)
10. print(i[keys])
(4)将"工作经验-下限"要求为0的改为{"工作经验":"不限"}
1.myquery = { "工作经验.下限":0 }
2.newvalues = { "$set": { "工作经验.下限":'不限' } }
3.x=collection.update_many(myquery, newvalues)
4.print(x.modified_count)
5.for i in collection.find({"工作经验.下限":'不限'}):
6. print(i['工作经验'])
(5)统计不同"学历"要求的总招聘人数
1.pipeline=[{"$group":{"_id":"$学历",'招聘总人数': {'$sum': '$所招人数'}}},{"$sort":{"招聘总人数":-1}}]
2.for i in collection.aggregate(pipeline):
3. print(i)
(6)统计各个城市各个行业的职位数量,以城市和职位数量多少排序
1.pipeline=[{"$unwind":"$所属行业"},{"$group":{"_id":{"城市":"$所在地.城市","行业":"$所属行业"},"职位数量":{"$sum":"$所招人数"}}},{"$sort":{"职位数量":-1,"城市":-1}}]
2.for i in collection.aggregate(pipeline):
3. print(i)
基于分布式数据库集群的大数据职位信息统计相关推荐
- 大数据之-Hadoop完全分布式_集群时间同步---大数据之hadoop工作笔记0043
然后我们需要在集群中的所有机器,保持他们的时间是一样的,为什么,? 比如,我们有3台机器, a机器时间是1点 b机器时间是2点 c机器时间是3点 那么如果我们设置了一个任务是要求他1点执行,那么,会出 ...
- spark 并行处理_如何使用Spark集群并行处理大数据
spark 并行处理 by Hari Santanam 通过Hari Santanam 如何使用Spark集群并行处理大数据 (How to use Spark clusters for parall ...
- MySQL Cluste(入门篇)—分布式数据库集群搭建
目录 前言 1 概述 1.1 分布式数据库集群 1.2 数据库的分布式和主从的区别 2 环境说明 2.1 系统环境 2.2 软件环境 3 安装MySQL Cluster 4 配置安装管理节点 4.1 ...
- Mycat高可用架构原理_Mycat集群搭建_HA高可用集群_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0027
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 前面我们已经讲了,对于数据库来说,mycat可以,我们通过搭建一主一从,双主双从,来实现数据库集群 ...
- 大型分布式数据库集群的研究
1.为什么要设计成分布式数据库,数据为什么要分区? 当数据量很大的时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影响了最终用户的体验. 在大数据量下对数据库的装载与导出,备份 ...
- MySQL Cluste—分布式数据库集群搭建
一.为什么要用MySQL Cluset分布式集群? 大家可以看这两位大佬的文章: https://blog.csdn.net/qq_15092079/article/details/82665307 ...
- 【干货】Dask快速搭建分布式集群(大数据0基础可以理解,并使用!)
非常开心,解决了很久都没有解决的问题 使用的语言: Python3.5 分布式机器: windows7 注意到,其实,通过这工具搭建分布式不需要管使用的电脑是什么系统. 分布式使用流程 Created ...
- 大数据之-Hadoop完全分布式_完全分布式模式下的集群配置---大数据之hadoop工作笔记0034
然后前面我们准备好了,完全分布式下用的集群环境,下面我们,开始配置hadoop集群 我们这里用hadoop102,hadoop103,hadoop104 这3台机器. 需要hadoop102,103, ...
- 大数据之-Hadoop完全分布式_集群群起_同时启动上万台集群机器---大数据之hadoop工作笔记0037
然后之前我们启动集群中的机器,都是一台一台启动的,很麻烦,现在我们来实现集群群起. 配置步骤上面有,我们跟着做一下. 首先我们进入 cd /opt/module/hadoop-2.7.2/ 进入以后找 ...
最新文章
- Matlab中for循环中的循环变量在循环体中不能改变
- opencv 实现进度控制
- Android开发之activity跳转页面失败的问题
- 【WebRTC---入门篇】(十五)WebRTC信令服务器实现
- 使用Struts2开发Java Web应用程序(目录)
- c++ 十进制、十六进制和BCD的相互转换
- 车位编号lisp_cad自动编号插件
- Windows 命令使用之 ping 命令
- 破解wifi密码最简单教程 就三步
- 机器学习:学习的分类
- mysql周德伟课后答案_MySQL数据库技术-周德伟
- ipv6服务器及环境搭建
- FlashFXP绿色版
- java程序 jnlp,使用JNLP文件启动应用程序
- Linux系统下C语言实现遍历该目录下所有文件
- 2023软件测试面试全方位话术,你想要的全都有
- R语言使用sd函数计算向量数据的标准差
- Echarts实战案例代码(10):echarts结合世界所有国家地图数据集geojson的(英文翻译映射)解决方案
- msvcp140.dll是什么?怎么修复msvcp140.dll缺失的问题
- python海龟怎样写字又快又好看_用python的小海龟 Turtle 画一朵好看又有趣的小花-Go语言中文社区...
热门文章
- vue 微信公众号开发 网页授权 配置业务域名
- VMware Workstation 配置 镜像文件受损 Invalid or corrupt kernel image
- GPT-5不能停!吴恩达、LeCun反对千人联名!OpenAI CEO也发声了...
- 程序员穿衣审美很谜?更谜的他们开始自己定义Style了
- jQuery二级联动
- 【信安学习笔记三】文件上传
- JavaScript 网页编程(六)—— ES6重点概念 + 开发基本规范
- 日语学习-五十音记忆法(下)
- 计算机组装与维护学什么区别,中职《计算机组装与维护》课程教学心得
- Web前端开发技术第二版课后上机题(第四章)