Spark RDD基本概念、宽窄依赖、转换行为操作

本文介绍一下rdd的基本属性概念、rdd的转换/行动操作、rdd的宽/窄依赖。


RDD:Resilient Distributed Dataset 弹性分布式数据集,是Spark中的基本抽象。

RDD表示可以并行操作的元素的不变分区集合

RDD提供了许多基本的函数(map、filter、reduce等)供我们进行数据处理。

RDD概述

通常来说,每个RDD有5个主要的属性组成:

  • 分区列表。

    RDD是由多个分区组成的,分区是逻辑上的概念。RDD的计算是以分区为单位进行的。

  • 用于计算每个分区的函数。

    作用于每个分区数据的计算函数。

  • 对其他RDD的依赖关系列表。

    RDD中保存了对于父RDD的依赖,根据依赖关系组成了Spark的DAG(有向无环图),实现了spark巧妙、容错的编程模型

  • 针对键值型RDD的分区器。

    分区器针对键值型RDD而言的,将key传入分区器获取唯一的分区id。在shuffle中,分区器有很重要的体现。

  • 对每个分区进行计算的首选位置列表。

    根据数据本地性的特性,获取计算的首选位置列表,尽可能的把计算分配到靠近数据的位置,减少数据的网络传输。

RDD的内部代码

先看看基本概念的代码:
//创建此RDD的SparkContext
def sparkContext: SparkContext = sc
// 唯一的id
val id: Int = sc.newRddId()
// rdd友善的名字
@transient var name: String = _
// 分区器
val partitioner: Option[Partitioner] = None
// 获取依赖列表
// dependencies和partitions中都用到了checkpointRDD,如果进行了checkpoint,checkpointRDD表示进行checkpoint后的rdd
final def dependencies: Seq[Dependency[_]] = {
    // 一对一的窄依赖
    checkpointRDD.map(r => List(new OneToOneDependency(r))).getOrElse {
        if (dependencies_ == null) {
            dependencies_ = getDependencies
        }
        dependencies_
    }
}
// 获取分区列表
final 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值