大数据技术基础综合项目——牛客网招聘岗位统计分析

零、实验环境说明
1. 操作系统:Ubuntu 16.04
2. Hadoop:Hadoop 2.7.1
3. Sqoop:Sqoop 1.4.6
4. Hbase:Hbase 1.1.5
5. Hive:Hive 1.2.1
6. MySQL:MySQL 5.7.16
7. IDE:
- Eclipse 3.8
- IntelliJ IDEA 2019.2
8. 可视化工具:Echarts
一、数据爬取及说明
1、数据来源:牛客网
2、数据量:18000条左右
3、数据字段:岗位名称、工作地点、学历要求、薪资、公司名称、反馈率、反馈时长、岗位发布时间等。
4、部分原始数据如下:

二、数据预处理阶段
2.1 删除空行的数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bU5hvNsl-1655643460358)(images/删除空行数据.png)]](https://img-blog.csdnimg.cn/348f5e19e8c04b74b4495b31c0480013.png)
2.2 区分实习与非实习岗位
(1)处理详情:
若岗位名称含有“实习”、“转正”,在其字段后加入“_0”,作为实习岗位的标识。
其他情况,则在其字段后加入“_1”,作为非实习岗位的标识。
(2)初始数据:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BliCFOfL-1655643460359)(images/初始数据1.jpg)]](https://img-blog.csdnimg.cn/8a0309912f18479b8281f3797a2a1808.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XvrreGv-1655643460359)(images/初始数据2.jpg)]](https://img-blog.csdnimg.cn/ce6b779c2b654e079f1fd84232badbca.png)
(3)处理结果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7pNkkL1-1655643460360)(images/结果1.jpg)]](https://img-blog.csdnimg.cn/c06b087daddb490cabb5355a5b0db59f.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYRI6FZi-1655643460361)(images/结果2.jpg)]](https://img-blog.csdnimg.cn/8549e0755e744ebfaeed0e49e963af05.png)
(4)所有数据的position字段都区分完毕:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hOlj5nah-1655643460361)(images/区分结果.jpg)]](https://img-blog.csdnimg.cn/b434f470d1a541908ad80200f3f6dba7.png)
2.3 岗位预处理
(1)处理详情:
包含“数据“的简化成”数据岗“;
包含“运营“的简化成”运营岗“;
包含“算法“的简化成”算法岗“;
包含“开发“、”前端“、”客户“、”测试“、”后端“、”C++“、”Java“的简化成”数据岗“;
包含“工程“的简化成”工程岗“;
包含“设计“的简化成”设计岗“;
包含“策划“的简化成”策划岗“;
包含“培训“的简化成”培训岗“;
其他的岗位名称一律处理成“其他“
(2)处理前:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q7V6Tgae-1655643460362)(images/岗位处理前.jpg)]](https://img-blog.csdnimg.cn/b15e1375996e4e37b5fe9d6689cd1124.png)
(3)处理后:


2.4 薪资处理
(1)预处理操作:
为方便计算,实习岗位的 [薪资面议] 处理为150元/天,非实习岗位的 [薪资面议] 处理为13K*12薪
(2)薪资面议处理前:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YefIP2kf-1655643460365)(images/薪资面议处理前1.jpg)]](https://img-blog.csdnimg.cn/2ee9c46bc82a4f989aad908b0572faa2.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sbgdH3DQ-1655643460366)(images/薪资面议处理前2.jpg)]](https://img-blog.csdnimg.cn/e1c14783289a4c49881bcf250087ee52.png)
(3)薪资面议处理后:


2.5 薪资平均化处理
(1)处理详情:
为了方便统计 薪资取区间的中间值(默认下取整)。例如:
8-10K12薪 --> 9K12薪
15-30K15薪 --> 22K15薪
300-400元/天 --> 350元/天
(2)处理后:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WOjJYaEj-1655643460368)(images/薪资平均化处理后1.jpg)]](https://img-blog.csdnimg.cn/4896bc58d244458ca4f286e0b0c6a431.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EVYAru0u-1655643460369)(images/薪资平均化处理后2.jpg)]](https://img-blog.csdnimg.cn/2205c13041764af791f849dad6b05866.png)
2.6 薪资处理
处理详情:将薪资处理为万元/年(非实习)和千元/月(实习)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xL2lp2Ig-1655643460369)(images/薪资处理1.jpg)]](https://img-blog.csdnimg.cn/35e70f45aaf24100aba5b2d5b4026e48.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0wzejdlk-1655643460370)(images/薪资处理2.jpg)]](https://img-blog.csdnimg.cn/b2c108a0aa294a638f21ecd5bee9273f.png)
2.7 空反馈率的处理
(1)若反馈率为空,自定义设置为 0.5。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aVpHMfgu-1655643460371)(images/空反馈率处理.jpg)]](https://img-blog.csdnimg.cn/7ea2c09183ff4f07ab8142252c478e06.png)
(2)处理后:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yyTeQ3qr-1655643460371)(images/空反馈率处理后1.jpg)]](https://img-blog.csdnimg.cn/5b87d7793c3445439635dd7f498a5af1.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rYnpxwXZ-1655643460372)(images/空反馈率处理后2.jpg)]](https://img-blog.csdnimg.cn/f578e05f2c0243a79642e049392673b5.png)
2.8 空反馈时长的处理
(1)若反馈时长为空,自定义为 7天。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vTdkU9aC-1655643460373)(images/空反馈时长处理.jpg)]](https://img-blog.csdnimg.cn/2765e7b28f3144b9b9aa08e696bdbc7f.png)
(2)处理后:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CgIzdQvq-1655643460373)(images/空反馈时长处理后1.jpg)]](https://img-blog.csdnimg.cn/1db94d962157414d8915bad39d8af53b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cfxi0f25-1655643460374)(images/空反馈时长处理后2.jpg)]](https://img-blog.csdnimg.cn/ac62704d6dba467cadd5af6784000d4f.png)
2.9 反馈时长的处理
(1)将反馈时长处理成拥有单个数值的字符串,比如:”7天“ 转换为 ”7“
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eeM047oT-1655643460375)(images/反馈时长处理.jpg)]](https://img-blog.csdnimg.cn/ea51061986ab4fff8905204042a72a4e.png)
(2)处理后:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20wG2lIW-1655643460375)(images/反馈时长处理后1.jpg)]](https://img-blog.csdnimg.cn/21f80076106e4f0aadaaf3f89f278ec0.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OuXRRxPx-1655643460376)(images/反馈时长处理后2.jpg)]](https://img-blog.csdnimg.cn/6530d17cbecd493a9dae60931e961c52.png)
2.10 数据日期的处理
爬取到的数据(招聘岗位)并没有相应的发布日期,但是可以确定的是爬取的数据(招聘岗位)的日期范围为2022年3月初到5月底,这里采用脚本date.sh 随机为每行数据生成一个日期时间。步骤如下:
提前将数据上传至Linux中
进入到数据的目录,编写脚本 date.sh
node1@node1-VirtualBox:/usr/local/NCJob$ vim date.sh
(3)执行脚本
node1@node1-VirtualBox:/usr/local/NCJob$ bash ./date.sh job.txt jobdata.txt
#!/bin/bash
infile=$1
outfile=$2
awk -F "\t" 'BEGIN{
srand();
id=0;
Date[0]="2022-03-03";Date[1]="2022-03-04";Date[2]="2022-03-05";Date[3]="2022-03-06";Date[4]="2022-03-07";
Date[5]="2022-03-10";Date[6]="2022-03-12";Date[7]="2022-03-14";Date[8]="2022-03-15";Date[9]="2022-03-18";
Date[10]="2022-03-19";Date[11]="2022-03-20";Date[12]="2022-03-21";Date[13]="2022-03-23";Date[14]="2022-03-24";
Date[15]="2022-03-28";Date[16]="2022-03-30";Date[17]="2022-04-06";Date[18]="2022-04-07";Date[19]="2022-04-08";
Date[20]="2022-04-09";Date[21]="2022-04-10";Date[22]="2022-04-12";Date[23]="2022-04-14"; Date[24]="2022-04-15";
Date[25]="2022-05-09";Date[26]="2022-05-10";Date[27]="2022-05-12";Date[28]="2022-05-14"; Date[29]="2022-05-15";
Date[30]="2022-05-19";Date[31]="2022-04-20";Date[32]="2022-04-12";Date[33]="2022-05-24"; Date[34]="2022-05-30";
}
{
id=id+1;
value=int(rand()*34);
print id"\t"$1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$7"\t"Date[value]
}' $infile> $outfile
查看前5行数据
node1@node1-VirtualBox:/usr/local/NCJob$ head -5 jobdata.txt
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T6Ud3j0u-1655643460378)(images/初始数据.jpg)]](https://img-blog.csdnimg.cn/cd4eabe6ee8e4174a926ca6cd6cba358.png)
三、上传数据到HDFS
3.1 上传数据到HDFS
node1@node1-VirtualBox:/usr/local/hadoop-2.7.1$ bin/hdfs dfs -mkdir -p /NCJob/data
node1@node1-VirtualBox:/usr/local/hadoop-2.7.1$ bin/hdfs dfs -put /usr/local/NCJob/jobdata.txt /NCJob/data
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRruMGh7-1655643460379)(images/hdfs数据.jpg)]](https://img-blog.csdnimg.cn/0711bcac22cd485e93e0d7e09473d0f0.png)
3.2 查看数据
node1@node1-VirtualBox:/usr/local/hadoop-2.7.1$ bin/hdfs dfs -cat /NCJob/data/jobdata.txt | head -5

3.3 在Hive上创建数据库
启动MySQL服务
node1@node1-VirtualBox:/usr/local/NCJob$ service mysql status
启动Hive
node1@node1-VirtualBox:/usr/local/hive-1.2.1$ ./bin/hive
创建数据库
hive> create database NCJob;
创建外部表
create external table NCJob.job (
id int,
pub_date string,
position string,
adress string,
education string,
salary double,
company string,
rate double,
duration int
)
row format delimited fields terminated by '\t'
stored as textfile location '/NCJob/data';
查询表
show create table job
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8AO7o0TP-1655643460379)(images/查看hdfs数据.jpg)]](https://img-blog.csdnimg.cn/adbd16fff03841cbb5b5355292239f21.png)
或者:
desc job;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqO4zQ9e-1655643460381)(images/表属性2.jpg)]](https://img-blog.csdnimg.cn/1a719facf4d84d2498d3de47a7f089f8.png)
查看部分数据:
hive> select * from job limit 5;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J4VGtoEP-1655643460381)(images/部分数据.jpg)]](https://img-blog.csdnimg.cn/b6ef472646a9452e8cb44df426debd58.png)
查询反馈时长:
hive> select duration from job limit 5;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qI6etejO-1655643460382)(images/查看反馈时长.jpg)]](https://img-blog.csdnimg.cn/b1423783eb834799b41a8d48c4faf0ad.png)
四、Hive数据分析
4.1 简单查询分析
查看前10个岗位的反馈时长和对应的公司
hive> select company, duration from job limit 5;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5RWmk5wB-1655643460383)(images/前5-1.jpg)]](https://img-blog.csdnimg.cn/85570b41c4a74d3ba2f8b059744b1cc3.png)
嵌套语句的使用
hive> select t.pd, t.edu from (select pub_date as pd,education as edu from job) as t limit 5;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xeA2fSyO-1655643460383)(images/前5-2.jpg)]](https://img-blog.csdnimg.cn/f932e2fc8e51430f8d2bec23751335a4.png)
4.2 查询条数统计分析
聚合函数count()计算job表中有多少行数
hive> select count(*) from job;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c0uoTmII-1655643460384)(images/count.jpg)]](https://img-blog.csdnimg.cn/543168903deb4d2e8fb0e7261018b207.png)
使用distinct查看岗位名称(position)不重复的有多少条
hive> select count(distinct position) from job;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YVkaUWET-1655643460385)(images/distinct.jpg)]](https://img-blog.csdnimg.cn/5a69c08193ae4f77814f3c4359616edb.png)
查询不重复的数据有多少条
select count(*) from (
select id, pub_date, position, adress, education, salary, company, rate, duration
from job
group by id, pub_date, position, adress, education, salary, company, rate, duration
having count(*) = 1
) t;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rFMRhSSO-1655643460386)(images/all.jpg)]](https://img-blog.csdnimg.cn/24e91ed9317f4f378832bf2c14a09853.png)
可以看到不存在重复的数据(job表一共有17986条数据)
4.3 关键字条件查询分析
4.3.1 以关键字的存在区间为条件的查询**
使用where关键字查询2022年3月4号到2022年4月1号发布了多少个岗位招聘
hive> select count(*) from job where pub_date < '2022-04-01' and pub_date > '2022-03-04';
执行结果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DGJqwA2X-1655643460386)(images/month3-4.jpg)]](https://img-blog.csdnimg.cn/f2724f24fa3643968dd02b3e4de72d8b.png)
以月的第n天为统计单位,依次显示第n天发布岗位招聘的个数
hive> select count(distinct position), day(pub_date) from job group by day(pub_date);
执行结果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBCPL1qX-1655643460387)(images/第N天岗位数量.jpg)]](https://img-blog.csdnimg.cn/e86ce6fbfdb04569acbf0e633ff05494.png)
4.3.2 关键字赋予特定值作为条件,对其他数据进行分析
统计非实习且学历要求为本科的岗位数量
select COUNT(education) from job where substr(position, -1, 2) = 1 and education = '本科';
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WUTX661n-1655643460388)(images/本科.jpg)]](https://img-blog.csdnimg.cn/b632ae9d3b1b4eab926ca4c3bdb27560.png)
4.4 根据学历要求分析
查询学历要求为本科占所有岗位的比例
select COUNT(education) from job where education = '本科';
执行结果:

则比例为 16218/17986 = 90.2%
查询学历要求为硕士占所有岗位的比例
select COUNT(education) from job where education = '硕士';
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Qq7PkFD-1655643460388)(images/本科比例.jpg)]](https://img-blog.csdnimg.cn/4dbb4f8707fc44eaaa79d91690fc6051.png)
则比例为 726/17986 = 4.0%
查询学历要求为博士占所有岗位的比例
select COUNT(education) from job where education = '博士';
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9V81tJi-1655643460389)(images/硕士比例.jpg)]](https://img-blog.csdnimg.cn/9a9a1c0a9cc5482ba707bcb32a0a460d.png)
则比例为 1042/17986 = 5.8%
统计实习薪资前十(单位:千元/月)
select DISTINCT(salary) from job where substr(position, -1, 2) = 0 order by salary desc limit 10;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YJ0yxIAJ-1655643460390)(images/薪资前十.jpg)]](https://img-blog.csdnimg.cn/bdaf640851f546c39699225b970b4eb8.png)
统计非实习薪资前十(单位:万元/月)
select DISTINCT(salary) from job where substr(position, -1, 2) = 1 order by salary desc limit 10;
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rMBXiCS8-1655643460391)(images/fefei非实习薪资前十.jpg)]](https://img-blog.csdnimg.cn/79556936f8d24067a152f21f9359e9c6.png)
五、Hive、MySQL、Hbase数据互导
5.1 Hive预操作
1. 创建临时表job_tmp
create table NCJob.job_tmp (
id int,
pub_date string,
position string,
adress string,
education string,
salary double,
company string,
rate double,
duration int
)
row format delimited fields terminated by '\t'
stored as textfile;
执行结果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hk4FL9v3-1655643460392)(images/临时表.jpg)]](https://img-blog.csdnimg.cn/1db0a725429544748a2bcdcf54e44011.png)
2. 将job表的数据插入到job_tmp
?
hive> insert overwrite table NCjob.job_tmp select * from NCjob.job ;
- 查看数据是否插入成功:
hive> select * from job_tmp limit 10;
执行结果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NeUEaGNi-1655643460392)(images/前10数据.jpg)]](https://img-blog.csdnimg.cn/fd0c78a5d5b04c2d90e27aea996a38fb.png)
5.2 Sqoop将数据从Hive导入MySQL
5.2.1 将临时表 job_tmp的数据从Hive导入MySQL中**
(1)登录MySQL
$mysql –uroot –p
(2)创建数据库
mysql> show databases ; mysql> create database NCJob ; mysql> use NCJob;
(3)查看数据库编码:
mysql> show variables like "char%";
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buTakc3b-1655643460393)(images/s数据库编码.jpg)]](https://img-blog.csdnimg.cn/50201a12e0e64cef9af5e591af418c6c.png)
(4)创建表
create table job_tmp (
id varchar(10),
pub_date DATE,
position varchar(30),
adress varchar(255),
education varchar(30),
salary varchar(10),
company varchar(50),
rate varchar(10),
duration varchar(10)
) engine = InnoDB DEFAULT CHARSET = utf8;
退出MySQL
Mysql>exit;
(5)导入数据
导入命令:
./bin/sqoop export --connect jdbc:mysql://localhost:3306/NCJob --username root --password 123456 --table job_tmp --export-dir '/user/hive/warehouse/ncjob.db/job_tmp' --fields-terminated-by '\t';
执行结果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WhOraxuL-1655643460394)(images/hive2mysql.jpg)]](https://img-blog.csdnimg.cn/75daf6ef1d4f4ad59e268d85a8476a00.png)
5.2.2 查看MySQL中job_tmp表的数据
$mysql –u root -p
mysql> use NCJob;
mysql> select * from job_tmp limit 5;
?
执行结果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PgSoFAcX-1655643460394)(images/msyql.jpg)]](https://img-blog.csdnimg.cn/6c169caedf22406fb9245cef12df4312.png)
5.3 使用Sqoop将数据从MySQL导入Hbase
(1)启动Hadoop集群、MySQL服务、Hbase服务
node1@node1-VirtualBox:~$ start-dfs.sh node1@node1-VirtualBox:~$ start-yarn.sh node1@node1-VirtualBox:~$ service mysql start node1@node1-VirtualBox:/usr/local/hbase-1.1.5$ ./bin/start-hbase.sh
(2)启动Hbase Shell
node1@node1-VirtualBox:/usr/local/hbase-1.1.5$ ./bin/hbase shell
(3)创建表 job_tmp
hbase(main):002:0> create 'job_tmp', {NAME => 'f1', VERSIONS=> 5}
(4)导入数据
node1@node1-VirtualBox:~$ cd /usr/local/sqoop-1.4.6_hadoop-2.0.4-alpha/ node1@node1-VirtualBox:/usr/local/sqoop-1.4.6_hadoop-2.0.4-alpha$ ./bin/sqoop import --connect jdbc:mysql://localhost:3306/NCJob --username root --password root --table job_tmp --hbase-table job_tmp --column-family f1 --hbase-row-key id --hbase-create-table -m 1
执行结果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dOAJVPbj-1655643460395)(images/mysql2hbasewithsqoop.jpg)]](https://img-blog.csdnimg.cn/8410251a8d23458a85bc2c54527d8266.png)
(5)查看Hbase中job_tmp表的数据
hbase(main):005:0> scan ‘job_tmp’,{LIMIT => 5}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vGtMafHW-1655643460396)(file:///C:/Users/浪险人/AppData/Local/Temp/msohtmlclip1/01/clip_image104.jpg)]](https://img-blog.csdnimg.cn/63332f89bef049d99c94171b6723785c.png)
5.4 使用Hbase Java API把数据从本地导入到Hbase中
(1)启动Hadoop集群、Hbase服务
node1@node1-VirtualBox:~$ start-dfs.sh node1@node1-VirtualBox:~$ start-yarn.sh node1@node1-VirtualBox:/usr/local/hbase-1.1.5$ ./bin/start-hbase.sh
(2)数据准备
node1@node1-VirtualBox:/usr/local/NCJob/data$ /usr/local/hadoop-2.7.1/bin/hdfs dfs -get /user/hive/warehouse/ncjob.db/job_tmp .
node1@node1-VirtualBox:/usr/local/NCJob/data$ cat ./job_tmp/* | head -5
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-34aBmgKS-1655643460396)(images/前5-3.jpg)]](https://img-blog.csdnimg.cn/443cdb161ee147758e2d471aeadffa30.png)
- 将00000*文件复制一份并重命名为job_tmp.output
node1@node1-VirtualBox:/usr/local/NCJob/data$ cat ./job_tmp/00000* > job_tmp.output
(3)编写数据导入程序
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JK0nUsSe-1655643460397)(images/数据导入.jpg)]](https://img-blog.csdnimg.cn/596407b07c3e48d5bf906c03b8dd5225.png)
(4)数据导入
hbase(main):007:0> truncate 'job_tmp'
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ANIszbQh-1655643460397)(images/清空表.jpg)]](https://img-blog.csdnimg.cn/86bfe8bbeeec42bda01f4888d0c3959a.png)
node1@node1-VirtualBox:~$ cd /usr/local/hadoop-2.7.1/ node1@node1-VirtualBox:/usr/local/hadoop-2.7.1$ bin/hadoop jar /usr/local/NCJob/data/hbase/ImportHbase.jar HbaseImport /usr/local/NCJob/data/job_tmp.output
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zQURDNI8-1655643460398)(../../../../%E5%86%99%E4%BD%9C/BigData/%E5%A4%A7%E6%95%B0%E6%8D%AE%E7%BB%BC%E5%90%88%E9%A1%B9%E7%9B%AE/NowCoder%E6%8B%9B%E8%81%98%E5%B2%97%E4%BD%8D%E7%BB%9F%E8%AE%A1%E5%88%86%E6%9E%90/images/print.jpg)]](https://img-blog.csdnimg.cn/e07657ec775d49189be04634af9033b3.png)
(5) 查看Hbase中job_tmp表的数据
hbase(main):008:0> scan 'job_tmp',{LIMIT=>3}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-saJIOZ2G-1655643460399)(../../../../%E5%86%99%E4%BD%9C/BigData/%E5%A4%A7%E6%95%B0%E6%8D%AE%E7%BB%BC%E5%90%88%E9%A1%B9%E7%9B%AE/NowCoder%E6%8B%9B%E8%81%98%E5%B2%97%E4%BD%8D%E7%BB%9F%E8%AE%A1%E5%88%86%E6%9E%90/images/addr%E5%AF%BC%E5%87%BA.jpg)]](https://img-blog.csdnimg.cn/7d40dbe0cee8446e9523116c3c8839a9.png)
六、MapReduce编程统计分析
6.1 利用MapReduce统计各个城市的岗位数量
(1)将Hive查询的地址字段(address)结果导出到HDFS中
insert overwrite directory '/input' select adress from job;
执行结果如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33L5MmVY-1655643460399)(images/查询结果.jpg)]](https://img-blog.csdnimg.cn/67d268e427d5493b9d9d1bede169b435.png)
(2)运行Jar包
node1@node1-VirtualBox:/usr/local/hadoop-2.7.1$ ./bin/hadoop jar ./myapp/NCJob-1.0-SNAPSHOT.jar com.node1.mr.GetAddrDriver /input /output
(3)查看输出文件:
node1@node1-VirtualBox:/usr/local/hadoop-2.7.1$ ./bin/hdfs dfs -ls /output
(4)查看统计结果:
node1@node1-VirtualBox:/usr/local/hadoop-2.7.1$ ./bin/hdfs dfs -cat /output/part-r-00000
(5)结果如下:
三亚 476
三明 3
上海 11687
东莞 85
东营 6
中山 6
临沂 6
丹东 90
乌海 256
乌鲁木齐 3
乐山 3
九江 9
云浮 3
佛山 18
佳木斯 3
保定 15
兰州 15
内江 3
凉山彝族自治州 3
包头 60
北京 13505
十堰 3
南京 5491
南充 3
南宁 33
南昌 15
南沙开发区 3
南通 54
即墨 6
厦门 5454
台北 3
台州 3
合肥 27
吉林 3
哈尔滨 18
唐山 329
嘉兴 3
城阳 6
大同 281
大连 24
天津 73
太原 84
威海 6
孝感 3
宁波 19
安顺 6
宜宾 3
巴中 3
常州 39
常德 3
平度 6
广元 3
广安 3
广州 7058
张家口 63
徐州 9
德州 6
德阳 3
忻州 78
惠州 6
成都 7251
扬州 36
承德 92
抚顺 78
揭阳 6
攀枝花 3
无锡 104
日照 6
昆明 18
晋中 30
晋城 505
朔州 60
本溪 105
杭州 7556
枣庄 6
柳州 9
梅州 6
武汉 5510
汕头 12
汕尾 6
江门 6
沈阳 27
河源 6
泉州 2
泰安 9
泰州 3
泸州 3
洛阳 3
济南 45
济宁 6
海口 42
海阳 6
淄博 9
淮南 15
深圳 8729
清远 15
温州 3
湖州 9
湛江 6
滨州 6
潍坊 6
潮州 6
烟台 12
玉林 12
珠海 204
甘孜藏族自治州 3
眉山 3
石家庄 81
福州 47
秦皇岛 533
绍兴 3
绵阳 3
聊城 6
肇庆 6
胶南 6
胶州 6
自贡 3
苏州 302
茂名 3
荆门 3
莱芜 6
莱西 6
菏泽 6
衡水 15
西安 4726
贵阳 24
资阳 3
赤峰 385
达州 3
运城 135
通辽 470
遂宁 3
邢台 304
邯郸 449 郑州 27
鄂尔多斯 75
重庆 588
锦州 18
长春 36
长沙 57
长治 382
阜新 15
阳江 6
阳泉 501
阿坝藏族羌族自治州 3
雅安 3
青岛 208
韶关 6
香港 18
黄冈 3
黄岛 6
齐齐哈尔 3
七、数据可视化分析
数据可视化通过Web端展示
7.1 统计一线大厂岗位情况
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hAf9hgO2-1655643460400)(images/大厂情况.jpg)]](https://img-blog.csdnimg.cn/acb46a26d0b748ad8b231d9e75adcd50.png)
(1) 实习
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9qhEv1pJ-1655643460401)(images/实习大厂情况.jpg)]](https://img-blog.csdnimg.cn/91693bdd0440477a9e17b5f109c7d00d.png)
(2)非实习
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cBnqBHRn-1655643460402)(images/非实习大厂情况.jpg)]](https://img-blog.csdnimg.cn/82ee51943cd64fa586e3aa478401ee6b.png)
7.2 岗位数量统计分析
(1)统计岗位数量前十的城市
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OSZmlKuC-1655643460402)(images/前十岗位数量.jpg)]](https://img-blog.csdnimg.cn/ea9e2f6c38904c43b5f96c99a75994b4.png)
(2)统计2022年3-5月份的岗位梳数量
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WkGqtUrB-1655643460403)(images/Month3-5.jpg)]](https://img-blog.csdnimg.cn/70cfc62b8be147a4a0224bb6814769f5.png)
7.3 学历要求统计分析
(1)统计非实习岗位学历要求
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MRufmVJy-1655643460404)(images/实习edu.jpg)]](https://img-blog.csdnimg.cn/8c9bab2614e2415591666a2a411d7609.png)
(2)统计实习岗位学历要求

7.4 薪资统计分析
(1)统计薪资前十的公司

(2)统计实习每个岗位的平均薪资
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jGiHQYrY-1655643460405)(images/实习avg(salary)].jpg)](https://img-blog.csdnimg.cn/f2166db4152e40e8a29e5382ddbbf29c.png)
(3)统计非实习每个岗位的平均薪资
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FMpfIKwM-1655643460406)(images/非实习avg(salary)].jpg)](https://img-blog.csdnimg.cn/7af5624d73194df28e0b21417ec7e00b.png)
7.5 反馈评估统计分析
(1)统计平均反馈率和平均反馈时长
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PdYvoo7p-1655643460407)(images/评估1.jpg)]](https://img-blog.csdnimg.cn/b0596e9f784b4712927c042c535e443c.png)
(2) 统计平均反馈时长前十长的公司(实习)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pi7PUc3t-1655643460407)(images/评估2.jpg)]](https://img-blog.csdnimg.cn/c21a231cb3f84ceaa9bfc181feb48dec.png)
(3)统计平均反馈时长前十短的公司(实习)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEOHyj2t-1655643460408)(images/评估3.jpg)]](https://img-blog.csdnimg.cn/41de2065ef3b4a57ac5a7ceaeb3254b8.png)
(4)统计平均反馈时长前十长的公司(非实习)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h86AgCaI-1655643460408)(images/评估4.jpg)]](https://img-blog.csdnimg.cn/8121f9975524494a801bc0d1a4611d24.png)
(5)统计平均反馈时长前十短的公司(非实习)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ChqvA6RK-1655643460409)(images/评估5.jpg)]](https://img-blog.csdnimg.cn/b5b8df3d7af446b692a163c4b7dbffc0.png)
(6)统计反馈时长前十短的公司(实习)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nutO9WC-1655643460410)(images/评估6.jpg)]](https://img-blog.csdnimg.cn/098349c083a4498dab8fa1dc4378f7bb.png)
(7)统计反馈时长前十短的公司(非实习)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1p8XFmBh-1655643460410)(images/评估7.jpg)]](https://img-blog.csdnimg.cn/a047878ce6a44b98a7c67b659e27c989.png)
八、参考资料
林子雨《大数据基础编程、实验和案例教程》
顺利完成
|