pythonspark编写文件完成RDD任务

这篇具有很好参考价值的文章主要介绍了pythonspark编写文件完成RDD任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

(1)熟悉Spark的RDD基本操作及键值对操作;

(2)熟悉使用RDD编程解决实际具体问题的方法。

二、实验平台

操作系统:Ubuntu16.04

Spark版本:2.4.0

Python版本:3.4.3

三、实验内容和要求

1. pyspark交互式编程

数据格式:

pythonspark编写文件完成RDD任务,javascript,spark,python

从左往右的列分别表示:职位编号、职位名称、薪资范围、工作区域、职位简述、工作年限、学历要求、职位详情等。

参考链接:spark rdd算子的简单练习_从以下5个题目中任选两个,使用rdd算子来完成,程序代码以及运行结果的截图写在-CSDN博客

请根据给定的实验数据,在pyspark中通过编程来计算以下内容:

(1)统计发布招聘岗位每个地区的平均最高薪酬和平均最低薪酬;

(2)统计每个地区的招聘岗位数;

(3)统计北京地区的平均最高薪酬;

答:创建数据如下,由于本题目需要的字段仅有“职位编号、职位名称、薪资最小值、薪资最大值、工作区域”,因此仅生成有这五个字段的97条数据,如下:

pythonspark编写文件完成RDD任务,javascript,spark,python

编写如下代码完成所有任务:

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()   

运行结果如下:

pythonspark编写文件完成RDD任务,javascript,spark,python

每个地区的平均最高、最低工资为:

('贵州', 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是区域列,验证结果如下,与运行结果相同:

pythonspark编写文件完成RDD任务,javascript,spark,python

3. 心得体会

编写py文件进行spark运行的方法。

rdd语句进一步理解。

excel的函数使用。文章来源地址https://www.toymoban.com/news/detail-859951.html

到了这里,关于pythonspark编写文件完成RDD任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark 【RDD编程(一)RDD编程基础】

            在Spark中,RDD是弹性分布式数据集(Resilient Distributed Dataset)的缩写。通俗来讲,RDD是一种抽象的数据结构,用于表示分布式计算中的数据集合。它是Spark中最基本的数据模型,可以看作是一个不可变的、可分区、可并行处理的数据集合。这个数据集的全部或部分可

    2024年02月09日
    浏览(45)
  • Spark【RDD编程(三)键值对RDD】

            键值对 RDD 就是每个RDD的元素都是 (key,value)类型的键值对,是一种常见的 RDD,可以应用于很多场景。                 因为毕竟通过我们之前Hadoop的学习中,我们就可以看到对数据的处理,基本都是以键值对的形式进行统一批处理的,因为MapReduce模型中

    2024年02月09日
    浏览(40)
  • Spark核心--RDD介绍

    rdd  弹性分布式数据集  是spark框架自己封装的数据类型,用来管理内存数据 数据集: rdd数据的格式  类似Python中 []     。 hive中的 该结构[] 叫 数组 rdd提供算子(方法)  方便开发人员进行调用计算数据 在pysaprk中本质是定义一个rdd类型用来管理和计算内存数据 分布式 : r

    2024年01月16日
    浏览(32)
  • 【Spark】RDD转换算子

    目录 map mapPartitions mapPartitionsWithIndex flatMap glom groupBy shuffle filter sample distinct coalesce repartition sortBy ByKey intersection union subtract zip partitionBy reduceByKey groupByKey reduceByKey 和 groupByKey 的区别 aggregateByKey foldByKey combineByKey reduceByKey、foldByKey、aggregateByKey、combineByKey 的区别 join leftOuterJoin

    2024年02月12日
    浏览(63)
  • Spark---RDD依赖关系

    1.1 RDD依赖关系 在Spark中,一个RDD的形成依赖于另一个RDD,则称这两个RDD具有依赖关系(一般指相邻的两个RDD之间的关系) ,RDD的依赖关系对于优化Spark应用程序的性能和可靠性非常重要。通过合理地设计RDD的转换和动作操作,可以避免不必要的Shuffle操作,提高计算效率。 words的

    2024年01月19日
    浏览(44)
  • Spark RDD 缓存机制

    Spark RDD 缓存是在内存存储RDD计算结果的一种优化技术。把中间结果缓存起来以便在需要的时候重复使用,这样才能有效减轻计算压力,提升运算性能。 当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接

    2024年03月25日
    浏览(45)
  • SPARK-RDD

    分区列表 RDD 数据结构中存在分区列表,用于执行任务时并行计算,是实现分布式计算的重要属性。 分区计算函数 Spark 在计算时,是使用分区函数对每一个分区进行计算 RDD之间的依赖关系 RDD 是计算模型的封装,当需求中需要将多个计算模型进行组合时,就需要将多个 RDD 建

    2024年02月04日
    浏览(34)
  • Spark---RDD序列化

    1 什么是序列化 序列化是指 将对象的状态信息转换为可以存储或传输的形式的过程。 在序列化期间,对象将其当前状态写入到临时或持久性存储区。 以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 2.RDD中的闭包检查 从计算的角度, 算子以外的代码

    2024年01月25日
    浏览(30)
  • 【Spark练习】RDD分区操作

    2.1 textFile 对于textFile而言,如果 没有在方法中指定分区数 ,则sc.defaultMinPartitions默认为 min(defaultParallelism,2) ,其中,defaultParallelism对应的就是spark.default.parallelism,如果是从HDFS中读取文件,则分区数为文件分片数(比如,128MB/片) rdd的分区数 = max(本地file的分片数, sc.default

    2024年02月02日
    浏览(33)
  • Spark-RDD详解

    RDD 弹性分布式数据集合 是Spark中的一种数据类型,管理spark的内存数据 [1,2,3,4] spark中还有dataframe,dataset类型 拓展:开发中可以通过类的形式自定以数据类型 同时还提供各种计算方法 弹性 可以对海量数据根据需求分成多份(分区),每一份数据会有对应的task线程执行计算

    2024年01月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包