使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
来源:互联网 发布:java文件管理系统源码 编辑:程序博客网 时间:2024/09/21 09:03
概述
前一篇文章,已经介绍了BMR的基础用法,再结合Spark和Scala的文档,我想应该是可以开始你的数据分析之路的.这一篇文章,着重进行一些简单的思路上的引导和分析.如果你分析招聘数据时,卡在了某个环节,可以试着阅读本文. 在继续下面的各种分析前,请确保已经读完了本系列文章的第三篇,并正确配置了BMR,同时导入了需要的真实招聘数据.
如果用传统编程语言工具?
假设我们从数据的采集,存储到数据的读取与使用,都是使用传统的语言工具,比如nodejs.
我们如果想知道到底有不同的薪水段有多少招聘职位并从多到少排序,我们可能需要:
- 新建对象,存储各个公司的数据;
- 循环读取数据,丰富各个公司的数据;
- 以薪水为分组,记录各个公司各个职位的信息;
- 以招聘数量为标准排序;
步骤,还算简单.暂且不提数据集再大些时,内存是极有可能吃不消;但是第2,3步的逻辑细节,就需要不少代码判断,比如如何循环读取文件数据?如果文件名命名是不规律的呢?如果文件数据是损坏的不规律数据呢?文件数据的json,并不是一个直接可用的职位数组,json结构转换的操作,逻辑上对你来说好实现吗?
诚然,用编程语言,没有什么做不了的,只是时间问题;既然谈到了时间,如果有另外一种明显快的多的方式,你会不用吗?
使用Spark进行分析
使用Spark实现上述同样的逻辑.以下操作,基于交互编程工具Zeppelin:
1.读取数据
val job = sqlContext.read.json("jobs")job.registerTempTable("job")job.printSchema()
2.获取各个薪水段职位数量,并排序
%sqlSELECT postionCol.salary,COUNT(postionCol.salary) salary_countFROM jobLATERAL VIEW explode(content.positionResult.result) positionTable AS postionColWHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.salaryORDER BY salary_count DESC
真的可以直接使用类似于SQL的语法,进行半结构数据的复杂查询,不知道各位看官,看完有何感想?
如果你的SQL功底,不是特别好,我的建议是:有空多看看文档,有需求时先打英文关键词google
几个你可能感兴趣的数据的sparkSQL示例查询
送给有需要的童鞋:
按公司名显示某职位的招聘数量
%sqlSELECT postionCol.companyFullName,COUNT(postionCol.companyFullName) postition_countFROM jobLATERAL VIEW explode(content.positionResult.result) positionTable AS postionColWHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.companyFullNameORDER BY postition_count DESC
显示某一职位对工作年限的要求
%sqlSELECT postionCol.workYear,COUNT(postionCol.workYear) workYearsFROM jobLATERAL VIEW explode(content.positionResult.result) positionTable AS postionColWHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.workYearORDER BY workYears DESC
显示某一职位对学历的要求
%sqlSELECT postionCol.education,COUNT(postionCol.education) education_countFROM jobLATERAL VIEW explode(content.positionResult.result) positionTable AS postionColWHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.educationORDER BY education_count DESC
显示某一职位各个公司的规模
%sqlSELECT postionCol.companySize,COUNT(postionCol.companySize) company_size_ountFROM jobLATERAL VIEW explode(content.positionResult.result) positionTable AS postionColWHERE content.positionResult.queryAnalysisInfo.positionName="ios" GROUP BY postionCol.companySizeORDER BY company_size_ount DESC
系列后记
这是第一个系列文章.我觉得,我还是说清楚了一些问题的.文章本身的价值,决定于是否它能遇到刚好需要它的人.这些东西就交给时间!单就本系列而言,最后聚合分析出的结果,连我自己都很经验.现在招聘市场对中高端人才的需求比例竟然如此之大,突然发现我的思维还停留在里两年前,那个”大白”横行的时代.
坦白说,我一直在寻找着我这么做的意义.系列文章的第一篇和第二篇阅读量都很少.但是,很庆幸,我继续坚持写了第三篇,终于有人慢慢认可和阅读了,顺带着前两篇的阅读量月多了些.
我们还是应该相信,人们对于美好的有价值的东西是有鉴赏能力的;如果你觉得没有,可能刚好你的付出,没有被有需要的人看到.
把自己感觉有价值的东西,记录下来,其他的就交给时间–这就是最后我想对那些可爱的努力想写博客分享东西的童鞋说的!一起加油↖(^ω^)↗
本系列专属gitub仓库:https://github.com/ios122/spark_lagou
- 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
- 使用Spark分析拉勾网招聘信息(一):准备工作
- 使用Spark分析拉勾网招聘信息(二): 获取数据
- 使用Spark分析拉勾网招聘信息(三): BMR 入门
- 深入理解Spark 2.1 Core (四):运算结果处理和容错的原理与源码分析
- 深入理解Spark 2.1 Core (四):运算结果处理和容错的原理与源码分析
- Spark 启动脚本分析
- 赶集网招聘信息数据分析与可视化
- Spark的standalone源码分析(四)
- 打包脚本使用与分析
- TPC-MySQL测试的安装、使用与结果分析
- Struts2的常用结果类型分析
- 几个常用应用的架构的分析
- 几个常用应用的架构的分析
- 几个常用应用的架构的分析
- spark-shell.sh脚本分析
- spark--python数据分析脚本
- Struts1几个常用类的分析
- 多语句表值函数与内联表值函数对比
- 完整的多项匹配tomcat access日志的正则
- linux查看系统编码和修改系统编码的方法
- Tomcat配置之Server.xml结构详解
- 解决MySQL不能更新同一张表查出来的结果…
- 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
- Android图片文件选择器
- CSS的基本选择器和优先级
- 算法的五个重要特性
- XML概述
- CodeMirrow使用和配置说明
- ios 处理侧滑和图片浏览器scrollView的手势冲突问题
- 最新源码分析Android windowManager(悬浮窗口)的实现
- IIS【asp+php+jsp】