RDD基本概念与算子

RDD基本概念与算子,第1张

RDD基本概念与算子

RDD
    • 1、什么是RDD
      • 1.1、RDD五大核心属性
    • 2、RDD转换算子
      • 2.1、单value
      • 2.2、双value
      • 2.3、Key-Value
    • 3、RDD行为算子

1、什么是RDD

RDD(Resilient Distributed Dataset)叫做d性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个d性的、不可变、可分区、里面的元素可并行计算的集合。

  1. d性
    存储的d性:内存与磁盘的自动切换;
    容错的d性:数据丢失可以自动恢复;
    计算的d性:计算出错重试机制;
    分片的d性:可根据需要重新分片。
  2. 分布式:数据存储在大数据集群不同节点上
  3. 数据集:RDD 封装了计算逻辑,并不保存数据
  4. 数据抽象:RDD 是一个抽象类,需要子类具体实现
  5. 不可变:RDD 封装了计算逻辑,是不可以改变的,想要改变,只能产生新的 RDD,在新的 RDD 里面封装计算逻辑
  6. 可分区、并行计算
1.1、RDD五大核心属性
  1. 分区列表
    RDD 数据结构中存在分区列表,用于执行任务时并行计算,是实现分布式计算的重要属性。
  2. 分区计算函数
    Spark 在计算时,是使用分区函数对每一个分区进行计算
  3. RDD之间的依赖关系
    RDD 是计算模型的封装,当需求中需要将多个计算模型进行组合时,就需要将多个 RDD 建立依赖关系。RDD之间的依赖关系又可以分为宽依赖与窄依赖
  4. 分区器
    当数据为 KV 类型数据时,可以通过设定分区器自定义数据的分区
  5. 首选位置
    计算数据时,可以根据计算节点的状态选择不同的节点位置进行计算,移动计算不移动数据。
2、RDD转换算子

转换算子:由一个RDD变成另一个RDD,是RDD之间的转换,是懒执行的,需要action算子触发执行

2.1、单value
  • map
    函数说明:将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。
  • mapPartitions
    函数说明:将待处理的数据以分区为单位发送到计算节点进行处理,这里的处理是指可以进行任意的处理,哪怕是过滤数据。
  • mapPartitionsWithIndex
    函数说明:将待处理的数据以分区为单位发送到计算节点进行处理,这里的处理是指可以进行任意的处理,哪怕是过滤数据,在处理时同时可以获取当前分区索引。
  • flatMap
    函数说明:将处理的数据进行扁平化后再进行映射处理,所以算子也称之为扁平映射
  • glom
    函数说明:将同一个分区的数据直接转换为相同类型的内存数组进行处理,分区不变
  • groupBy
    函数说明:将数据根据指定的规则进行分组, 分区默认不变,但是数据会被打乱重新组合,我们将这样的 *** 作称之为 shuffle。极限情况下,数据可能被分在同一个分区中一个组的数据在一个分区中,但是并不是说一个分区中只有一个组
  • filter
    函数说明:将数据根据指定的规则进行筛选过滤,符合规则的数据保留,不符合规则的数据丢弃。当数据进行筛选过滤后,分区不变,但是分区内的数据可能不均衡,生产环境下,可能会出现数据倾斜。
  • sample
    函数说明:根据指定的规则从数据集中抽取数据
  • distinct
    函数说明:将数据集中重复的数据去重
  • sortBy
    函数说明:该 *** 作用于排序数据。在排序之前,可以将数据通过 f 函数进行处理,之后按照 f 函数处理的结果进行排序,默认为升序排列。排序后新产生的 RDD 的分区数与原 RDD 的分区数一致。中间存在 shuffle 的过程
2.2、双value
  • union
    函数说明:对源 RDD 和参数 RDD 求并集后返回一个新的 RDD
  • intersection
    函数说明:对源 RDD 和参数 RDD 求交集后返回一个新的 RDD
  • subtract
    函数说明:以一个 RDD 元素为主,去除两个 RDD 中重复元素,将其他元素保留下来。求差集
  • zip
    函数说明:将两个 RDD 中的元素,以键值对的形式进行合并。其中,键值对中的 Key 为第 1 个 RDD中的元素,Value 为第 2 个 RDD 中的相同位置的元素。
2.3、Key-Value
  • reduceByKey
    函数说明:可以将数据按照相同的 Key 对 Value 进行聚合
  • groupByKey
    函数说明:将数据源的数据根据 key 对 value 进行分组
  • partitionBy
    函数说明:将数据按照指定 Partitioner 重新进行分区。Spark 默认的分区器是HashPartitioner
  • sortByKey
    函数说明:在一个(K,V)的 RDD 上调用,K 必须实现 Ordered 接口(特质),返回一个按照 key 进行排序的
  • mapValues
    函数说明:在一个(K,V)的 RDD 上调用,对每一个value逐条进行转换。
  • join
    函数说明:在类型为(K,V)和(K,W)的 RDD 上调用,返回一个相同 key 对应的所有元素连接在一起的(K,(V,W))的 RDD
  • leftOuterJoin
    函数说明:类似于 SQL 语句的左外连接
  • combineByKey
    函数说明:最通用的对 key-value 型 rdd 进行聚集 *** 作的聚集函数(aggregation function)。combineByKey()允许用户返回值的类型与输入不一致。
3、RDD行为算子

行为算子:由一个RDD调用,但最后没有返回新的RDD,而是返回了其他数据类型,行为算子可以触发任务的执行,每个action算子都会触发一个job。

  • reduce
    函数说明:聚集 RDD 中的所有元素,先聚合分区内数据,再聚合分区间数据
  • collect
    函数说明:在驱动程序中,以数组 Array 的形式返回数据集的所有元素
  • count
    函数说明:返回 RDD 中元素的个数
  • first
    函数说明:返回 RDD 中的第一个元素
  • take
    函数说明:返回一个由 RDD 的前 n 个元素组成的数组
  • countByKey
    函数说明:统计每种 key 的个数
  • save 相关算子
    saveAsTextFile
    saveAsObjectFile
    saveAsSequenceFile
    函数说明:将数据保存到不同格式的文件中
  • foreach
    函数说明:分布式遍历 RDD 中的每一个元素,调用指定函数

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5695843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存