一、实验目的
(1)熟悉Spark的RDD基本操作及键值对操作;
(2)熟悉使用RDD编程解决实际具体问题的方法。
二、实验平台
操作系统:Ubuntu16.04
Spark版本:2.4.0
Python版本:3.4.3
三、实验内容和要求
1. pyspark交互式编程
数据格式:
从左往右的列分别表示:职位编号、职位名称、薪资范围、工作区域、职位简述、工作年限、学历要求、职位详情等。
参考链接:spark rdd算子的简单练习_从以下5个题目中任选两个,使用rdd算子来完成,程序代码以及运行结果的截图写在-CSDN博客
请根据给定的实验数据,在pyspark中通过编程来计算以下内容:
(1)统计发布招聘岗位每个地区的平均最高薪酬和平均最低薪酬;
(2)统计每个地区的招聘岗位数;
(3)统计北京地区的平均最高薪酬;
答:创建数据如下,由于本题目需要的字段仅有“职位编号、职位名称、薪资最小值、薪资最大值、工作区域”,因此仅生成有这五个字段的97条数据,如下:
编写如下代码完成所有任务:
from pyspark import SparkConf, SparkContext #引入必要工具包 def main(): print("This work is running") conf = SparkConf().setMaster("local").setAppName("MyApp") sc = SparkContext(conf = conf)#这两行生成context,是必要的 data = sc.textFile("file:///usr/local/spark/data/jobs.txt") lines = data.map(lambda a: a.split(",")) min = lines.map(lambda a:(a[4],(int(a[2]),1)))#转换为键值对,添加1便于后续计数 max = lines.map(lambda a:(a[4],(int(a[3]),1))) mins = min.reduceByKey(lambda a,b:(a[0]+b[0],a[1]+b[1]))#计算总和与个数 maxs = max.reduceByKey(lambda a,b:(a[0]+b[0],a[1]+b[1])) mins_avg = mins.map(lambda a:(a[0],a[1][0]/a[1][1]))#计算均值 maxs_avg = maxs.map(lambda a:(a[0],a[1][0]/a[1][1])) print("每个地区的平均最高、最低工资为:") maxs_avg.foreach(print) mins_avg.foreach(print) area = lines.map(lambda a:(a[4],1))#转换为键值对,添加1计数 job_num = area.reduceByKey(lambda a,b:a+b) print("每个地区的岗位数目:") job_num.foreach(print) beijing = maxs_avg.filter(lambda a:a[0]=='北京') #过滤北京 print("北京地区平均最高工资:") beijing.foreach(print) if __name__ == '__main__': main() |
运行结果如下:
每个地区的平均最高、最低工资为:
('贵州', 10631.578947368422)
('北京', 10875.0)
('湖北', 11868.421052631578)
('四川', 11850.0)
('重庆', 10815.78947368421)
('贵州', 7105.263157894737)
('北京', 7225.0)
('湖北', 7815.789473684211)
('四川', 8100.0)
('重庆', 7236.8421052631575)
每个地区的岗位数目:
('贵州', 19)
('北京', 20)
('湖北', 19)
('四川', 20)
('重庆', 19)
北京地区平均最高工资:
('北京', 10875.0)
2. 结果验证
把数据导入excel中,使用averageifs(x:x,y:y,”北京”)和countif(x:x,”北京”)验证,其中x:x是工资列,y:y是区域列,第二个x:x是区域列,验证结果如下,与运行结果相同:
3. 心得体会
编写py文件进行spark运行的方法。
rdd语句进一步理解。文章来源:https://www.toymoban.com/news/detail-859951.html
excel的函数使用。文章来源地址https://www.toymoban.com/news/detail-859951.html
到了这里,关于pythonspark编写文件完成RDD任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!