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

news2024/12/27 19:19:14

目录

任务一:

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命令/脚本:

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

 

任务一:

  • 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)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringSecurity整合Oauth2.0

SpringSecurity整合Oauth2.0一、概述与原理1.1 、OAuth2.0 是什么?1.2、OAuth2.0中角色解释1.3、OAuth2.0的4中授权模式1.3.1、授权码模式(重点)1.3.1.1 原理1.3.1.2 代码1.3.2、密码模式(重点)1.3.2.1 原理1.3.2.2 代…

开发运维(DevOps)自动化运维与持续交付企业级实战

一、网站部署流程 1、传统网站部署流程 传统的网站部署,大家在运维过程中,网站部署是运维的工作之一,网站部署的流程大致分为: 需求分析—原型设计—开发代码—提交测试—内网部署—确认上线—备份数据—外网更新-最终测试,如果发现外网部署的代码有异常,需要及时回滚…

[附源码]JAVA毕业设计心理健康系统(系统+LW)

[附源码]JAVA毕业设计心理健康系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

网络安全观察报告恶意软件观察

攻击类型分析 2018 年,主要的攻击类型 1 为 SYN Flood,UDP Flood,ACK Flood,HTTP Flood,HTTPS Flood, 这五大类攻击占了总攻击次数的 96%,反射类攻击不足 3%。和 2017 年相比&…

使用分页导入的方式把大量数据从mysql导入es

1、首先要有分页功能的代码 如何使用mybatis-plus实现分页,可参考 http://t.csdn.cn/ddnlk 2、要创建feign远程调用模块 可以参考 http://t.csdn.cn/gshFw 3、在feign模块中声明远程调用接口 1.在feign模块中创建一个接口,名字可以是你要调用的服务名&…

指定区域内实现多尺度、多维度2D图形随机填充(如圆、椭圆、多边形)之MATLAB实现

N久之前,咱在公众号中分享了如何用MATLAB实现在指定区域内随机填充圆,并将相关功能封装一个名为randCircle函数里面,其可实现的功能如下: (1) 设定是否允许填充圆相交、相切或独立存在 (2) 指定区域内圆的生成个数 (3) 设定是否允…

[附源码]计算机毕业设计基于vuejs的文创产品销售平台appSpringboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【面试题】说说 Promise是什么?如何使用

大厂面试题分享 面试题库 前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 前言 本文主要介绍和总结Promise的作用、使用方式和其对应的一些方法,供大家参考学习,如有写的不准确的地方欢迎大家指出&a…

Android 使用 jni Demo示例

Android 使用 jni Demo示例简介1. NDK的介绍1.1 NDK 简介1.2 NDK 特点2. JNI介绍2.1 JNI 简介2.2 为什么要有 JNI?3. NDK 与 JNI 的关系NDK下载及环境配置1. 使用Android studio SDK Manager下载2.配置NDK2.1 配置环境变量2.2 Android studio配置NDK示例Demo流程1.版…

RabbitMQ - 安装和使用

RabbitMQ - 安装和使用一. 安装二. RabbitMQ的简单使用2.1 创建交换机2.1.1 交换机类型2.1.2 持久化方式2.2 创建队列2.3 绑定交换机和队列2.4 SpringBoot整合2.5 另外一种监听写法一. 安装 一键安装: docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 …

rtl8221b+mcu,2.5g光纤收发器的开发备份

1、rtl8221b是一款2.5g的光电转换的phy 系统的构建如下 为了省成本,不用mac来对接其中的gmii接口直接接光模块 2、mdio和mdc由mcu的gpio来模拟,在csdn上有很多的文章来参考 mdio的参数如下 不想看英文可以参考下面的文章 MDIO(clause 22 与 clause 4…

Java基础之《netty(10)—Reactor三种模式》

一、单Reactor单线程模式 1、工作原理图 2、方案说明 (1)Select是前面I/O复用模型介绍的标准网络编程API,可以实现应用程序通过一个阻塞对象监听多路连接请求。 (2)Reactor对象通过Select监控客户端请求事件&#xf…

一元钱注册 chatGPT账号

文章目录打开 openai chatgpt 主页注册 chatGPT 账号找境外的电话号码激活账号查看服务价格账号注册充值成功参考视频 打开 openai chatgpt 主页 打开之前首先登录 vpn。但是使用 vpn 有可能还是会被告知 当前国家没有开放服务个人建议: 使用美国的 ip 地址我使用…

PIN TO PIN替代GM8775C|DSI转LVDS转换方案芯片CS5518|CS5518完全替代GM8775C

GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单/双通道 LVDS 功能,MIPI 支持 1/2/3/4 通道可选,最大支持 4Gbps 速率。LVDS 时钟频率最高 154MHz, 最大支持视频格式为 FULL HD(1920 x 1200) CS551…

网络安全观察报告

攻击类型分析 2018 年,主要的攻击类型 1 为 SYN Flood,UDP Flood,ACK Flood,HTTP Flood,HTTPS Flood, 这五大类攻击占了总攻击次数的 96%,反射类攻击不足 3%。和 2017 年相比&…

测评报告:文件导入哪家强?

文件导入哪家强? 引子 最近业务上遇到一个场景,需要将一个/多个文本文件导入到与其结构对应的表中。功能需求比较简单,大部分的关系数据库基本都支持这个功能。基于上面的场景把手头上的几款开源数据库和国产数据库的文件导入功能进行了性能对…

【通信基础】TTL、RS232、RS485

TTL1、TTL简介RS2321、RS232基本概念2、DB9串口定义及接线参考3、RS232经典电路4、特点RS4851、RS485简介2、特点3、传输距离4、经典电路5、传输差分电平信号TTL 1、TTL简介 TTL的英文全称是Transisor-Transisor Logic. 翻译过来就是晶体管与晶体管之间的逻辑电路。 TTL电平信…

78.【大二实训--《宿舍管理系统》】

大二实训--《宿舍管理系统》1.在JSP中,如果想要获取后端传过来的数据2.在Dao层我们用数据库的属性给实体类赋值的时候3.在一个Servlet中,如果想要使用多个Service4.字符串yyyy-mm-dd格式转换为Date型5.在设置实体类的时候,属性名开头一定要小…

IDEA创建JavaWeb项目并配置Tomcat

本文教给各位使用IDEA创建web项目,配置tomcat进行访问,好了,下面进入正题 IDEA分为社区版和企业版,区别在于,社区版免费,企业版收费,但有30天免费使用期,到期后会提示你进行激活&am…

MySQL 单表查询

1.简单查询 1.1 SELECT语句 SELECT [DISTINCT] * |字段名1,字段名2,... FROM 表名 [WHERE 条件表达式1] [GROUP BY 字段名 [HAVING 条件表达式2]] [GROUP BY 字段名 [ASC | DESC]] [LIMIT [OFFSET] 记录数]1.2 查询指定字段 SELECT 字段1,字段2,... F…