大数据岗位需求情况分析(一)数据爬取和分析

file
百度搜索官网

使用八爪鱼网络数据采集器爬取数据

使用手机号注册账号

利用现有模板创建采集任务(免费用户不能设置定时采集以及云采集)
这里选择的是猎聘招聘网
file
设置查询关键词,这里使用”大数据“作为关键词
关键词可以写多行,并设置翻页次数
file
启动本地采集任务
file

如果IP被禁,过一段时间再次开启,多次执行就会累计足够数据
查看本地采集的数据
file

在远程数据库创建数据库,选取感兴趣的列建表
file

使用八爪鱼自带功能导出到远程MySQL数据库 (如果需要特殊处理可以导出CSV,处理后再导入数据库)
file

连接配置
file

找到唯一且不为空不重复的列作为主键,创建正确的映射关系是导出成功的前提
file

每批导出可以适当减少,因为同一批次中的数据如果有一个导出失败,整个批次也会失败。
file

如果还是不能导入,检查数据库表的编码是否支持中文,如果是latin则改成UTF8

导出csv格式再导入MySQL

发现八爪鱼采集的数据中包含回车空格的多余的字符,最好提前处理号再导出,否则导入到Hive时数据会混乱。

也可以在导入hive时使用参数--hive-drop-import-delims去掉两边多余的空格和回车

另外薪水字段的格式不方便后续分析,可以额外添加三个字段,分别放上解析出来的结果。

工作地点有的包含区名,不方便后续分析,可以额外添加一个city字段。

以上对原始数据的处理本是属于数据清洗的过程,一般是通过Hive完成的。这里由于数据采集是通过八爪鱼获得的,里面没有任何业务数据,所以为了方便直接在MySQL表上面添加了几个字段,方便后续的分析。

创建maven工程如下:

由于需要导入到MySQL,创建工具类

创建资源目录(marked as recources folder),并创建db.properties文件, 这里面主要是对MySQL数据源进行配置。

接下来编写实体类JobDetail

最后编写主程序如下:

这里设置了每10条数据一个批次,批次的大小可以通过BATCH_SIZE来修改。

数据导入

下面通过sqoop将mysql的数据导入到hive表当中,以便后续进行统计分析的工作。

在hive当中创建表

Hive是一个数据仓库基础工具提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Hive 并不能够在大规模数据集上实现低延迟快速的查询,Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

进入到hive的客户端,然后执行以下命令来创建hive数据库以及hive数据库表

使用sqoop将mysql数据导入到hive当中

数据进入mysql数据库之后,可以使用sqoop工具来讲数据导入到hive数仓当中,进行统一分析

使用Hive对大数据岗位数据进行多维分析

接下来使用hive进行统计分析工作,并将分析结果分别存在另一张hive表中。

1. 统计此次爬取的数据中一共有多少个大数据岗位

创建表

查询并插入数据

2、统计每个城市提供的大数据岗位数量

创建表

查询并插入数据

3、按照薪资降序排序各城市大数据相关岗位(每个城市按薪资倒序取前10)

创建表

查询并插入数据

说明:

  • row_number() over (partition by … order by)用来实现topN查询
    • 分组->排序->打行号标记,再套一层子查询根据行号打印每个分组的前10条记录

4、统计所有大数据岗位中出现次数最多的标签(取倒序前50个标签)

创建表

查询并插入数据

说明:

  • explode函数可以将单行数据(数组)转换成多列数据输出(行转列)
  • 使用UDTF函数时(如split函数)只能select拆分出来的字段
  • 如果想要同时select其他字段,需配合侧视图(lateral view)使用
  • single_tag是给拆分出来的字段起的别名

Views: 106