基于互联网的招聘信息统计与分析(作业)
实习要求:
** 一、基于互联网的招聘信息统计与分析:**
项目流程1.项目简介:
- 该项目通过挖掘和分析互联网的招聘信息,并将进行数据统计与分析,把不同的岗位薪酬,相同岗位的不同待遇等方面进行对比。可以直观的感受岗位、薪资和就业前景,更加直观的展望行业的未来,把握就业的最新动态。
2.数据来源:
- Python爬取拉钩招聘网的关于python岗位的招聘信息。
3.环境搭建
- 我使用的是原有的教学中的node-01、node-02、node-03基础上克隆一台node-04作为可视化虚拟机
4.数据预处理
- 创建Maven项目,选择jar打包方式,编写MapReduce程序,执行数据预处理
5.数据仓库
- 从节点连接至hive服务端,创建名为lagou的数据仓库,创建表,导入数据
6.数据分析
- 通过hive将字段明细表继续查询
7.数据导出
- 运动sqoop将hive中的表数据导出到MySQL关系数据库中,方便可视化
8.可视化
- 将抽象的数据图形化,采用Echarts辅助实现
二、搭建node-04搭建可视化节点
1.克隆
2.修改node-04配置
(1)修改node-04的ip
(2)修改node-04的主机名
(3)删除物理地址绑定文件
(4)重启查看
(5)ping外网
(6)修改虚拟机 /etc/hosts
(7)修改myid
(8)修改zoo.cfg
(9)查看集群效果
三、获取数据python爬虫获取
1.模拟浏览器爬取拉勾关于python的岗位信息
2.爬取
四、数据预处理 文件传输至hdfs,编写mr清洗数据
1.rz导入表格
2.flume上传
3.flume启动
3.flume采集日志
五、存储数据到hive和hdfs
hive1.安装hive
2.解压hive
3.重命名
4.配置
5.装载mysql驱动
6.删除guava包
7. ./schematool -dbType mysql -initSchema
错误原因:hadoop和hive的两个guava.jar版本不一致
解决办法:删除低版本的那个,将高版本的复制到低版本目录下
再次运行,成功
8.修改配置
9.启动hive
10.hive创建python_job表
查看python_job表
11.尝试hive内部导入 load data inpath “/export/Lagou.csv” into table lagou; 报错
因为我们还没有往hdfs导入文件
12.在完成六、七、八后已经可以解决这个问题,同时使用本地内存完成set hive.exec.mode.local.auto=true;再次尝试
再次导入数据,成功。经过后面的修改,修改为lagou_data
六、修改hdfs配置
节点磁盘、内存全为0,因为多次格式化,需要修正
1.搭建好平台后,使用hadoop fs -put向hadoop中上传文件时,报以下错误
1.1查看jps发现能查到节点信息
1.2使用hadoop dfsadmin -report命令查看磁盘使用情况,发现都是空的
2.这个问题一般是由于使用hadoop namenode -format 格式化多次,导致spaceID不一致造成的,解决方法如下:
2.1停止集群所有的服务。指令为:stop-all.sh
2.2删除hdfs中配置的data目录下的所有文件(级core-site.xml中配置的hadoop.tmp.dir)。
2.3重新格式化namenode。指令为:hadoop namenode -format
2.4重新启动hadoop集群。指令为:start-all.sh 再使用hadoop dfsadmin -report查看
成功,进行下一步。
七、向hive导入数据
将数据导入到hive中,便于下一步分析1.查看hive里的数据库
2.查看hdfs,这里的lagou对应hive里面创建的lagou表
3.导入数据,同时存在于dfs和hive
4.从hive查看
至此,hive存储数据已经完成了,接下来就可以将数据存放在mysql中了
八、hive数据分析
分析:“python开发工程师”,“python数据工程师”等岗位在北京、上海、深圳、程度的岗位数
分析相关岗位学历的薪资水平,并做出条形图展示出来。由于爬取的工资是一个范围,并且是k表示,所以将“k”替换为“000”,并取中间值
分析“python开发工程师”、“python工程师”、“Python后端”等岗位的平均工资、最高工资、最低工资,并作条形图将结果展示出来;1.要进行的分析:“python开发工程师”,“python数据工程师”等岗位在北京、上海、深圳、程度的岗位数
1.1尝试直接用分析"python数据工程师",发生错误
1.2查看错误,发现要开启yarn
1.3再次分析,错误
- 1.3.1尝试其他方法
1.4 分析“python开发工程师”、“python工程师”、“Python数据工程师”"python后端"等大数据相关岗位在成都、北京、上海、广州、深圳的岗位数,并做饼图将结果展示出来。
analysis_1:计算python开发工程师岗位数量
analysis_2:计算python工程师岗位数量
analysis_3:计算Python数据工程师岗位数量1.4.1计算python开发工程师岗位数量
导入
①发生错误,查看原因:namenode内存空间不够,jvm不够新job启动导致。解决方法:将hive可以设置成本地模式来执行任务试试:set hive.exec.mode.local.auto=true;
②改为本地模式,再次启动,成功
③继续分析北京、上海、广东、深圳
查看
1.4.2计算python工程师岗位数量
导入
查看
1.4.3计算Python数据工程师岗位数量
导入
查看
发现关于“数据工程师”的岗位为0
查看csv文件,发现确实没有相关岗位信息,换一个岗位“%python后端%”
1.4.4计算python后端岗位数量
导入
查看,发现仍保留了数据开发的值
①删除关于数据开发的结果
②再次insert
查看
2.分析相关岗位学历的薪资水平,并做出条形图展示出来。由于爬取的工资是一个范围,并且是k表示,所以将“k”替换为“000”,并取中间值
2.1重新导入数据
2.3在hdfs和hive创建表
2.4上传数据
2.5查看,这一次薪酬输出的是int,可以进行下一步的分析
2.6创建表education,存储工作名称,薪资,学历要求
重命名为edu
2.7创建表edu_money,用来存储平均、最高、最低工资
2.8将学历分为“本科”“大专”“不限”,求平均、最大、最小薪资
查看
3.分析“python开发工程师”、“python工程师”、“Python后端”等岗位的平均工资、最高工资、最低工资,并作条形图将结果展示出来;
3.1新建一个的表,名字随便取,我这儿就取的是job_salary,创建四个字段,分别用来存储工作名称,最高,最低,平均工资
3.2再创建一个过度表,名字取caiji,用来装名称,薪资,地点三个数据
3.3然后就向job_salary表插入数据
查看数据
经过调整,如下。显示出三种岗位薪资的平均值,最小值和最大值
4.导出数据到hdfs中
查看数据
4.1python开发工程师饼图
4.2python工程师饼图
4.3python数据工程师饼图
4.4学历
4.5三个职业薪资水平
5.用sqoop将数据存储到mysql中
5.1 通过sqoop查看mysql所有数据库和表,可以发现mysql下的表为空。我们要将python_job python_houduan python_shuju python_kaifa job_salary edu_money导入到mysql
九、sqoop连接mysql
1下载sqoop
wget http://mirror.bit.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
2.解压、移动、重命名
3.修改配置文件并生效
4.装载mysql驱动到sqoop/lib
5.启动sqoop
6.连接数据库出现错误
sqoop list-tables -connectjdbc:mysql://192.168.108.132:3306/mysql -uroot -p密码
6.1错误原因:缺少包。解决:在apache 上下载commons-lang-2.6.jar包并上传到lib下即可http://mirrors.tuna.tsinghua.edu.cn/apache//commons/lang/binaries/commons-lang-2.6-bin.zip
6.2运行,出现新的错误,是没有导入mysql驱动包导致,将mysql-connector-java-5.xx.x.jar 复制到sqoop安装目录的lib目录中即可!并修改/etc/my.cnf
6.3再次运行,成功,输出mysql中的数据库
sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root -P
6.4在mysql中数据库,与sqoop输出的一致,代表连接成功
十、数据导出
用sqoop将数据存储到mysql1.导入三种岗位在不同地域的岗位数量:python_kaifa python_shuju python_houduan,首先要在mysql中创建相同数据类型的表。
2.尝试导入:先将hive中的python_job导入mysql表中的lagou_data 出现错误
2.1解决:在命令行输入:hadoop classpath
2.2 把上述输出的值添加到yarn-site.xml文件对应的属性 yarn.application.classpath下面
2.3重启yarn,关闭防火墙,再次导入mysql。出现错误:缺少jar包
2.4进入/tmp/sqoop-root/compile下查看
①选择第一个进入,复制lagou_data.jar到sqoop/bin目录下
②运行,出现错误
③查询,修改hosts,并且使用主机名
2.5再次运行,发现map已经跑完了还报错。说明是mysql有问题,可能是mysql创建对应表的字段的长度不够。换一个表:python开发工程师python_kaifa后再次运行。成功 从mysql查看与hive数据一致但是没有jobNumber,需要修改编码格式再导入
2.6删除mysql中的表修改mysql端的库和表的格式
2.6.1删除表和库
2.6.2再次创建python_kaifa
2.6.3先查看lagou库的格式,如果不是utf8则修改
SHOW CREATE DATABASE lagou;
2.6.4可以发现lagou库的格式为latin1,修改其格式
ALTER DATABASE lagou DEFAULT CHARACTER SET utf8;
2.6.5查看库中的表的编码格式,不是则修改为utf8
SHOW CREATE TABLE lagou.python_kaifa;
2.6.6同样将其修改为utf8
ALTER TABLE lagou.python_kaifa CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
2.6.7创建其他表,发现全部随lagou库变为utf8
2.7 同上,将其他数据导入MySQL
①python后端python_houduan,在mysql中查看
sqoop export --connect “jdbc:mysql://127.0.0.1:3306/lagouuseUnicode=true&characterEncoding=utf-8” --username root --password Lyh123456! --table python_houduan --export-dir /user/hive/warehouse/lagou.db/python_houduan --input-fields-terminated-by ‘’
②python工程师python_shuju,在mysql中查看
sqoop export --connect “jdbc:mysql://127.0.0.1:3306/lagouuseUnicode=true&characterEncoding=utf-8” --username root --password Lyh123456! --table python_shuju --export-dir /user/hive/warehouse/lagou.db/python_shuju --input-fields-terminated-by ‘’
③创建学历与薪资的关系表 edu_money并导入数据,并在mysql中查看
sqoop export --connect “jdbc:mysql://127.0.0.1:3306/lagouuseUnicode=true&characterEncoding=utf-8” --username root --password Lyh123456! --table edu_money --export-dir /user/hive/warehouse/lagou.db/edu_money --input-fields-terminated-by ‘’
④创建岗位工资的平均最大最小的表job_salary,在mysql中查看
sqoop export --connect “jdbc:mysql://127.0.0.1:3306/lagouuseUnicode=true&characterEncoding=utf-8” --username root --password Lyh123456! --table job_salary --export-dir /user/hive/warehouse/lagou.db/job_salary --input-fields-terminated-by ‘’
⑤导入python_kaifa,在mysql中查看,没有乱码,显示完整
sqoop export --connect “jdbc:mysql://127.0.0.1:3306/lagouuseUnicode=true&characterEncoding=utf-8” --username root --password Lyh123456! --table python_kaifa --export-dir /user/hive/warehouse/lagou.db/python_kaifa --input-fields-terminated-by ‘’
十一、可视化
利用pymysql和pyecharts实现数据可视化1.mysql授权
GRANT ALL PRIVILEGES ON *.* TO ‘root’@‘%’ IDENTIFIED BY ‘Lyh123456!’ WITH GRANT OPTION;
1.1mysql-front可以查看数据,代表mysql可以被连接
1.2python通过pymysql连接mysql表
2地区岗位数
1.1python开发工程师 后面的表格可视化只需要修改sql = "select * from 表格名称"即可
import pymysql
from pyecharts.charts import Pie
from pyecharts import options as opts
db = pymysql.connect(host=“192.168.137.140”,port=3306,database=“lagou”,user=‘root’,password=‘Lyh123456!’)
cursor = db.cursor()
sql = “select * from python_shuju"cursor.execute(sql)
data = cursor.fetchall()
print(data)
addr = [‘北京’,‘上海’,‘深圳’,‘成都’,‘广东’]
num = [data[0][1],data[1][1],data[2][1],data[3][1],data[4][1]]
data_pair = [list(z) for z in zip(addr, num)]
data_pair.sort(key=lambda x: x[1])
# 画饼图c = (
Pie()
.add(”“, [list(z) for z in zip(addr,num)])
.set_global_opts(title_opts=opts.TitleOpts(title=“python工程师地区岗位分布”,subtitle=‘单位:个数’),toolbox_opts=opts.ToolboxOpts())
.set_series_opts(label_opts=opts.LabelOpts(formatter=”{b}: {c}"))
).render(“python工程师地区岗位分布.html”)1.2python工程师
1.3python后端
3学历与薪资
import pymysql
from pyecharts.charts import Bar
from pyecharts import options as opts
db = pymysql.connect(host=“192.168.137.140”,port=3306,database=“lagou”,user=‘root’,password=‘Lyh123456!’)
cursor = db.cursor()
sql = "select * from edu_money"cursor.execute(sql)
data = cursor.fetchall()
print(data)
zhiwei = [data[0][0],data[1][0],data[2][0]]
print(zhiwei)
min_list = [data[0][2],data[1][2],data[2][2]]
max_list = [data[0][3],data[1][3],data[2][3]]
average_list = [data[0][1],data[1][1],data[2][1]]
bar = Bar()
bar.add_xaxis(xaxis_data=zhiwei)
# 第一个参数是图例名称,第二个参数是y轴数据bar.add_yaxis(series_name=“最低工资”, y_axis=min_list)
bar.add_yaxis(series_name=“最高工资”, y_axis=max_list)
bar.add_yaxis(series_name=“平均工资”, y_axis=average_list)
# 设置表的名称bar.set_global_opts(title_opts=opts.TitleOpts(title=‘学历’, subtitle=‘工资单位:元/月’), toolbox_opts=opts.ToolboxOpts(), )
bar.render(“学历与薪资.html”)4不同岗位薪资图
import pymysql
from pyecharts.charts import Bar
from pyecharts import options as opts
db = pymysql.connect(host=“192.168.137.140”,port=3306,database=“lagou”,user=‘root’,password=‘Lyh123456!’)
cursor = db.cursor()
sql = "select * from job_salary"cursor.execute(sql)
data = cursor.fetchall()
# print(data)zhiwei = [data[0][0], data[1][0], data[2][0]]
print(zhiwei)
min_list = [data[0][2], data[1][2], data[2][2]]
max_list = [data[0][3], data[1][3], data[2][3]]
average_list = [data[0][1], data[1][1], data[2][1]]
print(min_list)
print(max_list)
print(average_list)
bar = Bar()
bar.add_xaxis(xaxis_data=zhiwei)
# 第一个参数是图例名称,第二个参数是y轴数据bar.add_yaxis(series_name=“最低工资”, y_axis=min_list)
bar.add_yaxis(series_name=“最高工资”, y_axis=max_list)
bar.add_yaxis(series_name=“平均工资”, y_axis=average_list)
# 设置表的名称bar.set_global_opts(title_opts=opts.TitleOpts(title=‘薪资水平图’, subtitle=‘工资单位:元/月’), toolbox_opts=opts.ToolboxOpts(), )
bar.render(“薪资水平图.html”)
基于互联网的招聘信息统计与分析(作业)相关推荐
- 基于 Python 的招聘信息可视化分析系统
温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 本项目利用 Python 从某招聘网站抓取海量招聘数据,进行数据清洗和格式化后存储到关系型数据库中( ...
- 基于互联网云脑架构分析百度的现状与未来
前言:这是未来智能实验室基于互联网云脑架构,对世界科技企业的未来发展趋势进行分析的文章.因为百度排在BAT的首位,因此这个系列研究文章就从百度开始进行研究. 作者:刘锋 计算机博士,互联网进化论作者 ...
- 基于JavaSwing开发模拟电梯系统+分析报告 课程设计 大作业源码
基于JavaSwing开发模拟电梯系统+分析报告: (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk 运行效果图: 基于JavaSwing开发模拟电梯系统+分 ...
- 新基建的内涵、意义和隐忧 ,基于互联网大脑模型的分析
2020年4月20日上午,国家发改委召开4月份例行新闻发布会,首次就"新基建"概念和内涵作出正式的解释."新型基础设施是以新发展理念为引领,以技术创新为驱动,以信息网络为 ...
- 招聘网探究分析报告(以描述性分析为主)
招聘网探究分析报告(以描述性分析为主) 1 引 言 记得在我中学时,就听到过"大学生一毕业就失业"的言论.网上资料显示是大学扩招,书本理论知识与岗位真实需求脱节严重,善于纸上谈兵而 ...
- 基于Python的招聘网站爬虫及可视化的设计与实现
摘 要 I Abstract II 引 言 1 第1章 课题概述 2 1.1 课题内容 2 1.2 课题背景 2 1.3 课题意义 3 1.4 运行环境 3 1.5 相关技术 3 1.5.1 Pyth ...
- 基于Android的招聘求职网站的设计与实现
毕业设计 基于Android的招聘求职网站的设计与实现 1.课题意义及目标 在二十一世纪求职方式跟以前是不同的,与在各个用人单位和招聘会上寻找理想的工作,基于安卓的招聘系统能够提供最好的最丰富及时的招 ...
- 毕业设计之 ---- 基于大数据挖掘的岗位薪资水平分析
文章目录 前言 数据预处理 爬虫爬取数据 数据清洗 数据分析 数据可视化分析 最后 - 技术解答 - 项目帮助 前言 今天向大家介绍一个基于大数据分析的毕业设计项目,基于大数据挖掘的岗位薪资水平分析. ...
- 【金猿案例展】荣乌高速公路:基于“互联网+”的高速公路机电设备运营监测平台建设...
海云数据案例 本案例由海云数据投递并参与评选,数据猿独家全网首发:更多关于[金猿榜/奖·2019征集评选]的相关信息,请点击这里了解详情丨征案例.征文章.征产品=评企业.评人物.评产品. 大数据产业创 ...
最新文章
- java一个参数 多个值_Spring里有类似@RequestParam的办法去绑定一个多值参数吧
- 基于postfix一步一步构建Mailserver,支持虚拟用户,支持WebMail
- 第22届清华大学电子设计大赛决赛
- USACO 2.2.2 Subset Sums解题报告
- 通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤
- Spring Cloud【Finchley】-17 使用Zuul为单个或全部微服务提供容错与回退功能
- Python生成器笔记
- 解决:Unable to access jarfile xxx-0.0.1-SNAPSHOT.jar
- c语言实现队列基本算法,【算法】队列的C语言实现
- 《Effective Java 3rd》读书笔记——类和接口
- 广州线下见面会,来了!
- 使用GameKit实现IOS设备之间的蓝牙通信
- 2048小程序代码c语言,微信小程序版2048
- 如何在Apache官网下载Apache shiro
- 基于bim二次开发的智能楼宇管理系统
- wxid中文是什么_wxid开头的微信号是什么意思?怎么添加微信好友
- web api(基于NFine框架) 中接口跳转数据格式错误解决方案
- 解决番茄插件visual assist x 不能安装的问题
- SQLServer 2008中事务日志已满问题处理
- 6.25 周测题目整理
热门文章
- 使用nginx做数据库端口转发
- doctype html的作用是什么,DOCTYPE的作用
- Android事件分发机制五:面试官你坐啊
- 把图片中的文字转成文本
- excel筛选多个工作表VB的使用
- OpenSSL生成本地https测试证书
- 阮幼林 计算机软件技术基础,阮幼林(信息学院)老师 - 武汉理工大学 - 院校大全...
- 全球铁氧体行业收入预计2028年达到54.475亿美元
- 【Linux】拯救者Y700安装问题“拯救者无法开启wifi问题”
- vue3 解决双击与单击事件的冲突