前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果

使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果

作者头像
ios122
发布2018-01-02 19:31:17
6080
发布2018-01-02 19:31:17
举报
文章被收录于专栏:iOS122-移动混合开发研究院

概述

前一篇文章,已经介绍了BMR的基础用法,再结合Spark和Scala的文档,我想应该是可以开始你的数据分析之路的.这一篇文章,着重进行一些简单的思路上的引导和分析.如果你分析招聘数据时,卡在了某个环节,可以试着阅读本文. 在继续下面的各种分析前,请确保已经读完了本系列文章的第三篇,并正确配置了BMR,同时导入了需要的真实招聘数据.

如果用传统编程语言工具?

假设我们从数据的采集,存储到数据的读取与使用,都是使用传统的语言工具,比如nodejs.

我们如果想知道到底有不同的薪水段有多少招聘职位并从多到少排序,我们可能需要:

  1. 新建对象,存储各个公司的数据;
  2. 循环读取数据,丰富各个公司的数据;
  3. 以薪水为分组,记录各个公司各个职位的信息;
  4. 以招聘数量为标准排序;

步骤,还算简单.暂且不提数据集再大些时,内存是极有可能吃不消;但是第2,3步的逻辑细节,就需要不少代码判断,比如如何循环读取文件数据?如果文件名命名是不规律的呢?如果文件数据是损坏的不规律数据呢?文件数据的json,并不是一个直接可用的职位数组,json结构转换的操作,逻辑上对你来说好实现吗?

诚然,用编程语言,没有什么做不了的,只是时间问题;既然谈到了时间,如果有另外一种明显快的多的方式,你会不用吗?

使用Spark进行分析

使用Spark实现上述同样的逻辑.以下操作,基于交互编程工具Zeppelin:

1.读取数据
代码语言:javascript
复制
val job = sqlContext.read.json("jobs")
job.registerTempTable("job")
job.printSchema()
读书数据
读书数据
2.获取各个薪水段职位数量,并排序
代码语言:javascript
复制
%sql
SELECT  postionCol.salary,COUNT(postionCol.salary) salary_count
FROM job
LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol
WHERE content.positionResult.queryAnalysisInfo.positionName="ios" 
GROUP BY postionCol.salary
ORDER BY salary_count  DESC
获取各个薪水段职位数量,并排序
获取各个薪水段职位数量,并排序

真的可以直接使用类似于SQL的语法,进行半结构数据的复杂查询,不知道各位看官,看完有何感想?

如果你的SQL功底,不是特别好,我的建议是:有空多看看文档,有需求时先打英文关键词google

几个你可能感兴趣的数据的sparkSQL示例查询

送给有需要的童鞋:

按公司名显示某职位的招聘数量
代码语言:javascript
复制
%sql
SELECT  postionCol.companyFullName,COUNT(postionCol.companyFullName) postition_count
FROM job
LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol
WHERE content.positionResult.queryAnalysisInfo.positionName="ios" 
GROUP BY postionCol.companyFullName
ORDER BY postition_count  DESC
按公司名显示某职位的招聘数量
按公司名显示某职位的招聘数量
显示某一职位对工作年限的要求
代码语言:javascript
复制
%sql
SELECT  postionCol.workYear,COUNT(postionCol.workYear) workYears
FROM job
LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol
WHERE content.positionResult.queryAnalysisInfo.positionName="ios" 
GROUP BY postionCol.workYear
ORDER BY workYears  DESC
显示某一职位对工作年限的要求
显示某一职位对工作年限的要求
显示某一职位对学历的要求
代码语言:javascript
复制
%sql
SELECT  postionCol.education,COUNT(postionCol.education) education_count
FROM job
LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol
WHERE content.positionResult.queryAnalysisInfo.positionName="ios" 
GROUP BY postionCol.education
ORDER BY education_count  DESC
显示某一职位对学历的要求
显示某一职位对学历的要求
显示某一职位各个公司的规模
代码语言:javascript
复制
%sql
SELECT  postionCol.companySize,COUNT(postionCol.companySize) company_size_ount
FROM job
LATERAL VIEW explode(content.positionResult.result) positionTable AS postionCol
WHERE content.positionResult.queryAnalysisInfo.positionName="ios" 
GROUP BY postionCol.companySize
ORDER BY company_size_ount  DESC
显示某一职位各个公司的规模
显示某一职位各个公司的规模

系列后记

这是第一个系列文章.我觉得,我还是说清楚了一些问题的.文章本身的价值,决定于是否它能遇到刚好需要它的人.这些东西就交给时间!单就本系列而言,最后聚合分析出的结果,连我自己都很经验.现在招聘市场对中高端人才的需求比例竟然如此之大,突然发现我的思维还停留在里两年前,那个"大白"横行的时代.

坦白说,我一直在寻找着我这么做的意义.系列文章的第一篇和第二篇阅读量都很少.但是,很庆幸,我继续坚持写了第三篇,终于有人慢慢认可和阅读了,顺带着前两篇的阅读量月多了些.

我们还是应该相信,人们对于美好的有价值的东西是有鉴赏能力的;如果你觉得没有,可能刚好你的付出,没有被有需要的人看到.

把自己感觉有价值的东西,记录下来,其他的就交给时间--这就是最后我想对那些可爱的努力想写博客分享东西的童鞋说的!一起加油↖(^ω^)↗

本系列专属gitub仓库:https://github.com/ios122/spark_lagou

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-09-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 如果用传统编程语言工具?
  • 使用Spark进行分析
    • 1.读取数据
      • 2.获取各个薪水段职位数量,并排序
      • 几个你可能感兴趣的数据的sparkSQL示例查询
        • 按公司名显示某职位的招聘数量
          • 显示某一职位对工作年限的要求
            • 显示某一职位对学历的要求
              • 显示某一职位各个公司的规模
              • 系列后记
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档