Spark之RDD(弹性分布式数据集) 详解

本文详细介绍了Spark的RDD(弹性分布式数据集),包括其分布式、分区、不可变、容错性和计算分层等特性。RDD是Spark的核心抽象,提供转换和行动操作,支持数据并行计算。RDD的执行过程采用惰性调用,依赖关系分为窄依赖和宽依赖,优化了计算效率。此外,文章还涵盖了RDD的创建、操作类型及其在Spark架构中的运行流程。
摘要由CSDN通过智能技术生成

1.RDD简述

RDD简单的解释:
RDD是将数据项拆分为多个分区的集合,存储在集群的工作节点上的内存和磁盘中,并执行正确的操作。
复杂的解释:
RDD是用于数据转换的接口,如map算子、filter算子;
RDD指向了存储在HDFS、Cassandra、 HBase等、 或缓存
(内存、内存+磁盘、仅磁盘等),或在故障或缓存收回时重新计算其他RDD分区中的数据

RDD(Resilient Distributed Dataset):弹性分布式数据集,Spark计算的基石,为用户屏蔽了底层对数据的复杂抽象和处理,为用户提供了一组方便的数据转换与求值方法。

Spark 的核心是建立在统一的抽象 RDD 之上,基于 RDD 的转换和行动操作使得 Spark 的各个组件可以无缝进行集成,从而在同一个应用程序中完成大数据计算任务。

RDD 提供了一个抽象的数据架构,从而让开发者不必担心底层数据的分布式特性,只需将具体的应用逻辑表达为一系列转换处理,不同 RDD 之间的转换操作形成依赖关系,可以实现管道化,从而避免了中间结果的存储,大大降低了数据复制、磁盘 IO 和序列化开销。

2.RDD特点

  1. 分布式( Distributed)
    数据的计算并非只局限于单个节点,而是多个节点之间协同计算得到
  2. 分区
    RDD是分区的,RDD里面的具体数据是分布在多台机器上的Executor里面的。堆内内存和堆外内存+磁盘。
  3. 不可变
    RDD是不可变的,如果需要在一个RDD上进行转换操作,则会生成一个新的RDD
  4. 数据集
    RDD是只读的、分区记录的集合,每个分区分布在集群的不同节点上;
    RDD并不存储真正的数据,只是对数据和操作的描述
  5. 弹性(Resilient)
    自动进行存储方式的切换 RDD优先存放在内存中,当内存不足,Spark自动将RDD写入磁盘
  6. 容错性
    根据数据血统,可以自动从节点失败中恢复分区;
    基于Linage的高效容错机制,在任何时候都能进行重算,根据数据血统,可以自动从节点失败中恢复分区,各个分片之间的数据互不影响
  7. 计算
    计算是分层的,有应用->Job->Stage->TaskSet->Task,每一层都有对应的计算的保障与重复机制,保障计算不会由于一些突发因素而终止。
  8. 分片
    可以根据业务需求或者一些算子来重新调整RDD中的数据分布。

3.RDD运行原理

一个 RDD 就是一个分布式对象集合,提供了一种高度受限的共享内存模型,其本质上是一个只读的分区记录集合,不能直接修改。
每个 RDD 可以分成多个分区,每个分区就是一个数据集片段,并且一个 RDD 的不同分区可以保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算。

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值