爬取招聘网站数据分析数据,可视化,flume,hive,sqoop,mysql

news/2024/5/20 14:16:32/文章来源:https://blog.csdn.net/TINANP/article/details/107351240

一、爬取数据
①qiancheng.py
在这里插入图片描述
②pipelines.py
在这里插入图片描述
③sitting
在这里插入图片描述
④items
在这里插入图片描述

二、数据储存
1、把MongoDB数据导出为csv文件
在E:\MongoDB\bin下cmd

mongoexport.exe  --csv -f _id,name,salary,gongsi,didian,jingyan,xueli,neirong,jineng -d qiancheng -c Table -o  Test.csv

在这里插入图片描述
在这里插入图片描述
2、上传数据
在这里插入图片描述
3、利用flume收集日志
(1)创建agent-hdfs.conf文件

vi agent-hdfs.conf

(2)配置agent-hdfs.conf文件
在这里插入图片描述
(3)查看日志
在这里执行目录下执行命令
在这里插入图片描述

 ./bin/flume-ng agent --conf ./conf/ --name a2 --conf-file ./conf/agent_hdfs.conf -Dflume.root.logger=DEBUG,console

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

三、数据分析
1、导入数据
(1)创建数据库
在这里插入图片描述
(2)创建表
在这里插入图片描述
(3)导入数据到t_data表中
(4)查看数据

select * from t_data;

在这里插入图片描述
2、岗位薪资分析
(1)数据分析岗位
①模糊匹配:条件为数据分析、万/月,提取name和salary字段存入sjfx1表中

create table sjfx1 as select name, salary from t_data where name like '%数据分析%' and salary like '%万/月%';

查看sjfx1中是否有数据
select * from sjfx1 limit 10;
在这里插入图片描述
②分割薪资,求出每个岗位的最高、最低、平均工资

create table sjfx2 as select name, regexp_extract(salary,'([0-9]+)-',1) as salary1_min, regexp_extract(salary,'-([0-9]+)',1) as salary1_max, (regexp_extract(salary,'([0-9]+)-',1) + regexp_extract(salary,'-([0-9]+)',1))/2 as salary1_avg from sjfx1;

查看sjfx2中是否有数据

select * from sjfx2 limit 10;

在这里插入图片描述
③计算所有数据分析岗位的最大 、最小、平均工资

create table sjfx_s as select "数据分析" as name, min(int(salary1_min)) as salary1_min, max(int(salary1_max)) as salary1_max, regexp_extract(avg(salary1_avg),'([0-9]+.[0-9]?[0-9]?)',1) as salary1_avg from sjfx2;

查看sjfx_s表中数据
在这里插入图片描述
(2)大数据开发工程师
①模糊匹配:条件为大数据开发工程师、万/月,提取name和salary字段存入kfgc1表中

create table kfgc1 as select name, salary from t_data where name like '%大数据开发%' and salary like '%万/月%'; 

查看kfgc1中是否有数据

select * from kfgc1 limit 10;

在这里插入图片描述
②分割薪资,求出每个岗位的最高、最低、平均工资


create table kfgc2 as select name, regexp_extract(salary,'([0-9]+)-',1) as salary2_min, regexp_extract(salary,'-([0-9]+)',1) as salary2_max, (regexp_extract(salary,'([0-9]+)-',1) + regexp_extract(salary,'-([0-9]+)',1))/2 as salary2_avg from kfgc1;

查看kfgc2中是否有数据

select * from kfgc2 limit 10;

在这里插入图片描述
③计算所有大数据开发工程师的最大 、最小、平均工资

create table kfgc_s as select "大数据开发" as name, min(int(salary2_min)) as salary2_min, max(int(salary2_max)) as salary2_max, regexp_extract(avg(salary2_avg),'([0-9]+.[0-9]?[0-9]?)',1) as salary2_avg from kfgc2;

查看kfgc_s表中数据

select * from kfgc_s;

在这里插入图片描述
(3)数据采集岗位
①模糊匹配:条件为数据采集、万/月,提取name和salary字段存入sjcj1表中

create table sjcj1 as select name, salary from t_data where name like '%数据采集%' and salary like '%万/月%'; 

查看kfgc1中是否有数据

select * from sjcj1 limit 10;

在这里插入图片描述
②分割薪资,求出每个岗位的最高、最低、平均工资

create table sjcj2 as select name, regexp_extract(salary,'([0-9]+)-',1) as salary3_min, regexp_extract(salary,'-([0-9]+)',1) as salary3_max, (regexp_extract(salary,'([0-9]+)-',1) + regexp_extract(salary,'-([0-9]+)',1))/2 as salary3_avg from sjcj1;

查看sjcj2中是否有数据
在这里插入图片描述
③计算所有大数据开发工程师的最大 、最小、平均工资

create table sjcj_s as select "数据采集" as name, min(int(salary3_min)) as salary3_min, max(int(salary3_max)) as salary3_max, regexp_extract(avg(salary3_avg),'([0-9]+.[0-9]?[0-9]?)',1) as salary3_avg from sjcj2;

查看sjcj_s表中数据
在这里插入图片描述
(4)把三个岗位表合并。
①创建一个zong表,并插入sjfx_s、kfgc_s、sjcj_s的数据

create table zong1(name string, min int, max int, avg string);
insert into table zong1 select * from sjfx_s;
insert into table zong1 select * from kfgc_s;
insert into table zong1 select * from sjcj_s;

查看zong1表数据

select * from zong1;

在这里插入图片描述
5、将hive分析结果利用sqoop存储到mysql数据库中。
在sqoop目录下运行
利用sqoop导入数据hive到mysql出现乱码,是编码的问题

--connect jdbc:mysql://hadoop:3306/sj_fx 改为--connect "jdbc:mysql://hadoop:3306/qflap?useUnicode=true&characterEncoding=utf-8"
bin/sqoop export --connect "jdbc:mysql://hadoop:3306/sj_fx?useUnicode=true&characterEncoding=utf-8"  --username root --password password --table salary1 --export-dir /user/hive/warehouse/qiancheng.db/zong1 --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\001" --input-lines-terminated-by "\\n" -m 1;

在这里插入图片描述
查看数据
在这里插入图片描述

6、岗位数分析
分析岗位:数据分析、大数据开发工程师、数据采集。
地点:成都、北京、上海、广州、深圳。
(1)成都地区
创建chengdu表

create table chengdu(name string, num int);

向表中插入数据
①数据分析岗位

insert into table chengdu select '数据分析', count(*) from t_data where name like '%数据分析%' and jobplace like '%成都%';

②大数据开发工程师岗位

insert into table chengdu select '大数据开发工程师', count(*) from t_data where name like '%大数据开发工程师%' and didian like '%成都%';

③数据采集岗位

insert into table chengdu select '数据采集', count(*) from t_data where name like '%数据采集%' and didian like '%成都%';

查看表chengdu表的数据
在这里插入图片描述

(2)北京地区
创建beijing表

create table beijing(name string, num int);

向表中插入数据
①数据分析岗位

insert into table beijing select '数据分析', count(*) from t_data where name like '%数据分析%' and didian like '%北京%';

②大数据开发工程师岗位

insert into table beijing select '大数据开发工程师', count(*) from t_data where name like '%大数据开发工程师%' and didian like '%北京%';

③数据采集岗位

insert into table beijing select '数据采集', count(*) from t_data where name like '%数据采集%' and didian like '%北京%';

查看beijing表数据
在这里插入图片描述
(3)上海地区
创建shanghai表

create table shanghai(name string, num int);

向表中插入数据
①数据分析岗位

insert into table shanghai select '数据分析', count(*) from t_data where name like '%数据分析%' and didian like '%上海%';

②大数据开发工程师岗位

insert into table shanghai select '大数据开发工程师', count(*) from t_data where name like '%大数据开发工程师%' and didian like '%上海%';

③数据采集岗位

insert into table shanghai select '数据采集', count(*) from t_data where name like '%数据采集%' and didian like '%上海%';

查看shanghai表数据
在这里插入图片描述
(4)广州地区
创建guangzhou表

create table guangzhou(name string, num int);

向表中插入数据
①数据分析岗位

insert into table guangzhou select '数据分析', count(*) from t_data where name like '%数据分析%' and didian like '%广州%';

②大数据开发工程师岗位

insert into table guangzhou select '大数据开发工程师', count(*) from t_data where name like '%大数据开发工程师%' and didian like '%广州%';

③数据采集岗位

insert into table guangzhou select '数据采集', count(*) from t_data where name like '%数据采集%' and didian like '%广州%';

查看guangzhou表数据
在这里插入图片描述
(5)深圳地区
创建shenzhen表

create table shenzhen(name string, num int);

向表中插入数据
①数据分析岗位

insert into table shenzhen select '数据分析', count(*) from t_data where name like '%数据分析%' and didian like '%深圳%';

②大数据开发工程师岗位

insert into table shenzhen select '大数据开发工程师', count(*) from t_data where name like '%大数据开发工程师%' and didian like '%深圳%';

③数据采集岗位

insert into table shenzhen select '数据采集', count(*) from t_data where name like '%数据采集%' and didian like '%深圳%';

查看shenzhen表数据
在这里插入图片描述

(5)将hive分析结果利用sqoop存储到mysql数据库中。
在mysql中创建chengdus、beijings、shanghais、guangzhous、shenzhens五个表

create table chengdus(name varchar(20), num int) charset utf8 collate utf8_general_ci;
create table beijings(name varchar(20), num int) charset utf8 collate utf8_general_ci;
create table shanghais(name varchar(20), num int) charset utf8 collate utf8_general_ci;
create table guangzhous(name varchar(20), num int) charset utf8 collate utf8_general_ci;
create table shenzhens(name varchar(20), num int) charset utf8 collate utf8_general_ci;

①导入chengdu表数据
在sqoop目录下运行

bin/sqoop export --connect "jdbc:mysql://hadoop:3306/sj_fx?useUnicode=true&characterEncoding=utf-8"  --username root --password password --table chengdus --export-dir /user/hive/warehouse/qiancheng.db/chengdu --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\001" --input-lines-terminated-by "\\n" -m 1;

在这里插入图片描述
②导入beijing表数据

bin/sqoop export --connect "jdbc:mysql://hadoop:3306/sj_fx?useUnicode=true&characterEncoding=utf-8"  --username root --password password --table beijings --export-dir /user/hive/warehouse/qiancheng.db/beijing --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\001" --input-lines-terminated-by "\\n" -m 1;

在这里插入图片描述
③导入shanghai表数据

bin/sqoop export --connect "jdbc:mysql://hadoop:3306/sj_fx?useUnicode=true&characterEncoding=utf-8"  --username root --password password --table shanghais --export-dir /user/hive/warehouse/qiancheng.db/shanghai --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\001" --input-lines-terminated-by "\\n" -m 1;

在这里插入图片描述
④导入guangzhou表数据

bin/sqoop export --connect "jdbc:mysql://hadoop:3306/sj_fx?useUnicode=true&characterEncoding=utf-8"  --username root --password password --table guangzhous --export-dir /user/hive/warehouse/qiancheng.db/guangzhou --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\001" --input-lines-terminated-by "\\n" -m 1;

在这里插入图片描述
⑤导入shenzhen表数据

bin/sqoop export --connect "jdbc:mysql://hadoop:3306/sj_fx?useUnicode=true&characterEncoding=utf-8"  --username root --password password --table shenzhens --export-dir /user/hive/warehouse/qiancheng.db/shenzhen --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\001" --input-lines-terminated-by "\\n" -m 1;

在这里插入图片描述
7、分析大数据相关岗位1-3年工作经验的薪资水平
(1)、提取出大数据相关岗位,并有1、2、3 、1-3年工作经验的数据

create table xzsp_dsj as select name, salary, jingyan from t_data where name like '%大数据%' and salary like '%万/月%' group by name, salary, jingyan having jingyan='1年经验' or jingyan='2年经验' or jingyan='3年经验' or jingyan='1-3年经验'; 

查看xzsp_dsj表数据
在这里插入图片描述
(2)、分割薪资,求出每个岗位的最高、最低、平均工资

create table xzsp_dsj1 as select name, int(regexp_extract(salary,'([0-9]+)-',1)) as min, int(regexp_extract(salary,'-([0-9]+)',1)) as max, (int(regexp_extract(salary,'([0-9]+)-',1)) + int(regexp_extract(salary,'-([0-9]+)',1)))/2 as avg from xzsp_dsj;

查看xzsp_dsj1表数据
在这里插入图片描述
(3)、计算所有大数据岗位的最大 、最小、平均工资

create table xzsp_dsj_s as select "大数据" as name, min(min) as min, max(max) as max, regexp_extract(avg(avg),'([0-9]+.[0-9]?[0-9]?)',1) as avg from xzsp_dsj1;

查看xzsp_dsj_s数据
在这里插入图片描述
(4)将hive分析结果利用sqoop存储到mysql数据库中。
在mysql上创建xzsp_dsj_s表

create table xzsp_dsj_s (name varchar(20), min int, max int, avg varchar(10)) charset utf8 collate utf8_general_ci;

导入数据,在sqoop目录下运行代码

bin/sqoop export --connect "jdbc:mysql://hadoop:3306/sj_fx?useUnicode=true&characterEncoding=utf-8"  --username root --password password --table xzsp_dsj_s --export-dir /user/hive/warehouse/qiancheng.db/xzsp_dsj_s --input-null-string "\\\\N" --input-null-non-string "\\\\N" --input-fields-terminated-by "\001" --input-lines-terminated-by "\\n" -m 1;

查看xzsp_dsj_s表数据
在这里插入图片描述
8、可视化
①岗位工资分析图
在这里插入图片描述
在这里插入图片描述
②岗位数分析图
在这里插入图片描述
数据分析岗位
在这里插入图片描述
大数据开发工程师岗位
在这里插入图片描述
数据采集岗位图
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

换IP软件带你了解网站的反爬虫策略有哪些

自有网络以来,就一直存在爬虫和反爬虫,越是大网站,越是成熟的网站,其反爬虫机制越完善,最初的IP限制,验证码限制,还有其他的限制,今天小编跟大家一起去了解下网站在哪些地方设置反爬…

Slashdot:技术怪才的新闻网站

你关心CSS吗?Gnome呢?还有GPL?这是一个提供“技术怪才的新闻”的网站Slashdot所热衷谈论的话题。一旦你明白聚集Slashdot周围的人群到底在谈论什么,你也许会一样充满热情地加入进去。 Slashdot是你从来没有访问过的最重要的网站&a…

学习c/c++的50个好网站

来自: 你不躲猫猫(why我所做的看起来像一个笑话) 2010-04-01 10:12:43 1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C脚本和程序。所有程序都分为…

你应该关注的十个智能硬件中文网站

智能硬件 摘要 : 不论你是智能硬件从业者,还是智能硬件爱好者,不妨统一称之为“智能硬件er”。在信息泛滥的时代,专注于智能硬件,能提供好的资讯、观点、资源的平台屈指可数。这是为您收集的值得关注的十大智能硬件中文网站。 不论…

PHP网站根据项目指定不同PHP版本进行解析

前提 : 公司产品安装后环境为Nginx/PHP/MySQL , 其中PHP为5.4版本 , 这个版本相对稳定 , 但是对于某些时候来说版本已经很低了 , 所以考虑在不升级的情况下 (主要是升级后会引起主体项目崩溃) , 采用其他版本的PHP来进行解析 , 主要是利用了PHP进程管理器 FPM 1. 下载一个高版…

Vs2010发布Asp.Net网站及挂到IIS服务上

首先用VS2010打开一个ASP.net项目。 也可以通过VS菜单-》生成-》发布网站 选择发布网站的路径, 这样发布就可以了, 下面就把发布出来的网站挂到IIS上,控制面板-》管理工具》Internet信息服务(IIS)管理器 在树列表中选择…

网站热图生成工具 ClickHeat

阿里百川,开启移动应用开发的新篇章 ClickHeat 是一个很酷的 JavaScript 库,它可以帮你统计一个页面上用户点击的热度分布图,支持中文显示。 如下图所示 在线演示(用户名和口令都是demo): http://www.la…

网站悬浮窗——在线客服

** <!DOCTYPE html> <html> <head><meta charset"utf-8"> <title>在线尝试 Bootstrap 实例</title><link rel"stylesheet" href"css/bootstrap.min.css"> <script src"js/jquery.min.js&quo…

强烈推荐自学互联网编程开发网站,学习神器

#php中文网 免费 www.php.cn 评分:五颗星 #后盾人网 免费 www.houdunren.com 系统课程是多个实战课程的组合&#xff0c;用来全面掌握一门语言或软件的使用&#xff0c;尤其适合刚入门的新手系统牢固的掌握知识。 在线文档以及css等视频讲解超细节,一集一般不超过10分钟. 五…

自动部署 打造个人网站:阿里云(ECS)+域名+Node+Webhooks(github)

我的个人网站 前阵子赶上双十一优惠&#xff0c;买了三年的阿里云1核2G40G的云服务器&#xff08;三年一共二百多&#xff09;&#xff0c;配了个简单的node服务&#xff0c;为了使用GitHub的webhooks功能&#xff0c;后期又买了一年的.club域名&#xff08;第一年8rmb)&#x…

python爬虫爬取导航网站所有网址并建立自己的导航网站

分析目标网站 目标网站的域名│www.dianyinggou.com/linkNav/网站结构 | 静态是否反爬虫 | 否 制定攻略 1.将分类页面的目录和名称写进列表里面&#xff0c;然后通过循环将列表里面的目录和名称依次导出&#xff0c;目的是为了组合成新的链接&#xff0c;方便访问下级链接 如…

管理联系人网站(web小项目)

此项目主要功能有&#xff1a; 输入验证码登录 查看联系人列表 添加联系人 修改/删除联系人 批量删除联系人 功能预览&#xff1a; 所有文件一览 注&#xff1a;web目录下的css&#xff0c;fonts&#xff0c;js是Bootstrap框架的&#xff0c;要使用需在Bootstrap官网下载…

d3-tip文本提示框实现步骤+click和mouseout触发动作事件冲突_解决方法

目录 d3-tip介绍d3-tip实现步骤1、添加使用的JavaScript函数库2、为柱形图创建tip3、调用tip4、确定数据集5、添加触发动作事件6、click和mouseout触发动作事件冲突_解决方法 d3-tip介绍 d3-tip是D3可视化工具中的一种&#xff0c;可用于生成自定义文本提示框。如下图所示&…

淘宝网站发展详解

一、引言 光棍节的狂欢 “时间到&#xff0c;开抢&#xff01;”坐在电脑前早已等待多时的小美一看时间已到 2011 年 11 月 11 日零时&#xff0c;便迫不及待地投身于淘宝商城一年一度的大型网购促销活动 —— “淘宝双11购物狂欢节”。小美打开早已收藏好的宝贝 —— 某品牌的…

浏览器兼容性问题,前端性能优化、SEO优化

目录 一、常见浏览器兼容性问题及解决二、前端性能优化三、SEO优化 一、常见浏览器兼容性问题及解决 不同浏览器的内核不尽相同&#xff0c;所以各个浏览器对网页的解析存在一定的差异。 浏览器内核主要分为两种&#xff0c;一是渲染引擎&#xff0c;另一个是js 引擎&#xff…

Nginx静态网站的部署

Nginx静态网站的部署 静态网站的部署 首先先看一下nginx/conf/nginx.conf 配置文件内的信息&#xff1a; #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pi…

使用node.js爬网站图

目标网站&#xff1a;http://m.mmjpg.com/hot/ var http require(http); var request require(request); var fs require(fs); var Promise require(bluebird); var curIndex 1 var curYear 2015 //下载文件 function downloadFile(uri,filename){return new Promise((re…

dedecms—网站栏目的显示

1.首先去网址下载安装包&#xff1a;http://www.dedecms.com/&#xff0c;然后根据提示进行安装&#xff0c;安装完成效果如下&#xff1a; 2.在templets添加一个属于自己的文件夹&#xff0c;比如demo 3.登录dedecms进行配置 4.在demo下面建三个模板index_article.htm&#xf…

(转)大型网站架构系列:电商网站架构案例(3)

本文章是电商网站架构案例的第三篇&#xff0c;主要介绍数据库集群&#xff0c;读写分离&#xff0c;分库分表&#xff0c;服务化&#xff0c;消息队列的使用&#xff0c;以及本电商案例的架构总结。 6.5数据库集群&#xff08;读写分离&#xff0c;分库分表&#xff09; 大型网…

【围观】IBM网站首页改版

意外上http://www.ibm.com/发现改版了&#xff0c;从源码里的日期来看是6月30号改的&#xff0c;整体效果非常大气&#xff0c;拉动垂直滚动条的时候导航还会变化&#xff0c;有点创意。企业建站时可以借鉴。