RDD常用算子

本文详细介绍了Spark中的RDD(Resilient Distributed Dataset)及其五大特征,包括其不可变、分区、依赖关系等。重点讲解了SparkContext作为程序入口的作用,以及如何创建RDD。此外,还深入探讨了RDD的Transformation和Action算子,如map、reduceByKey、collect、saveAsTextFile等,并对比了groupByKey与reduceByKey的性能差异。
摘要由CSDN通过智能技术生成

RDD常用算子

1.什么是RDD

  • RDD(Resilient Distributed Dataset)弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变、可分区、里面的元素可并行计算的集合

  • 所有的运算以及操作都建立在RDD数据结构的基础上

  • 可以认为RDD是分布式的列表或数组,抽象的数据结构,RDD是一个抽象类Abstract Class泛型Generic Type

2.RDD的五大特征

  • RDD是有分区的
    • RDD的分区是RDD数据储存的最小单位
    • 一份RDD的数据,本质上是分隔成了很多区
  • RDD的方法会作用在其所有的分区上
  • RDD之间有依赖关系
  • Key-Value型的RDD可以有分区器
    • 默认分区器:Hash分区规则,可以手动设置一个分区器
  • RDD的分区规划,会尽量靠近数据所在的服务器
    • 在初始RDD(读取数据的时候)规划的时候,分区会尽量规划到储存数据所在的服务器上,只有就可以走本地读取,避免网络读取

3.程序执行入口SparkContext对象

  • Spark RDD编程的程序入口对象是SparkContext对象(不论何种对象)
  • 只有构建出SparkContext,基于它才能执行后续的API调用和计算
  • 本质上,SparkContext对编程来说,主要功能就是创建第一个RDD出来

4.RDD的创建

  • 通过并行化集合创建

    • 并行化创建,是指将本地集合转化成分布式RDD(本地转分布式)

      rdd = sparkcontext.parallelize(参数1,参数2)
      # 参数1:集合对象即可,比如list
      # 参数2:分区数
      
    • 读取文件

      • textfile:这个API可以读取本地数据,也可以读取hdfs数据

        sparkcontext.textfile(参数1,参数2)
        # 参数1.文件路径,支持本地文件,支持HDFS路径
        # 参数2.表示最小分区数量(可选)
        # 注意:参数2话语权不足,spark有自己的判断,在它允许的范围内,参数2有效果,超过spark允许的范围,参数2失效
        
      • wholeTextFile:适合读取小文件,尽量少分区读取数据,减少shuffle几率

        sparkcontext.wholeTextFiles(参数1,参数2)
        # 参数1.文件路径,支持本地文件路径和HDFS文件路径
        # 参数2.表示最小分区数量
        # 注意:参数2话语权不足,spark有自己的判断,在它允许的范围内,参数2有效果,超过spark允许的范围,参数2失效
        

5.RDD算子

  • 什么是算子?
    • 分布式集合对象上的API称之为算子
  • RDD算子分为两类
    • Transformation:转换算子
      • 定义:返回值仍旧是RDD的,称之为转换算子
      • 特性:这类算子是lazy懒加载的,如果没有action算子,Transformation算子是不工作的
    • Action:动作算子
      • 定义:返回值表示RDD的就是action算子

对于这两类算子来说,Transformation算子,相当于在构建计划,action是一个指令让这个执行计划开始工作。

如果没有action,Transformation算子之间的迭代关系,就是一个没有通电的流水线。只有action到来,这个数据处理的流水线才开始工作

6.常用Transformation算子

  • map:将RDD的数据一条条处理(处理的逻辑基于map算子中接收到的处理函数),返回新的RDD

    rdd.map(fu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值