Spark引擎中RDD的性质

RDD(Resilient Distributed Dataset,弹性分布式数据集)是SparkCore提供的核心抽象。一个RDD在逻辑上抽象地代表了一个HDFS文件或数据库中的表,但RDD是被分区的,每个分区分布在不同的节点上,从而并行执行。

RDD算子包括:

  • 转换算子:也叫计算,有flatmap、map等;
  • 缓存算子:这个有的不叫算子,叫持久化,使用cache方法;
  • 行动算子:有collect等。RDD是懒执行的,没有行动算子,前面的所有算子不会执行(但是会加载进来,加载也会执行其中的代码,例如打印代码)。
  • 输出算子:如saveAsFile等。

Spark中对于一个RDD执行多次算子的默认原理是:每次你对一个RDD执行一个算子操作时,都会重新从源头处计算一遍,计算出那个RDD来,然后再对这个RDD执行你的算子操作。例如:A->B->C->D,然后如果需要C->E就需要A->B->C->E这一套计算,这种方式的性能是很差的。如果C重复使用可以做持久化,也就是做缓存算子。

RDD通常通过HDFS文件或Hive表创建,也可以通过数据库表或应用程序的集合(例如Scala代码)来创建。

RDD的性质如下:

  • 不可变性:每经过一次算子生成一个新的RDD,不是对之前的做改变,RDD理解成逻辑的概念;
  • 可分区性:类似MapReduce中多个Map任务并行度,有默认分区也可自定义(根据集群性能来确定分区);
  • 弹性:包括:
    1. 存储弹性:内存与磁盘的自动切换,RDD默认存放在内存中,但内存容量不足时,Spark会自动将RDD数据写入磁盘,用户不用去管这些,也就是对用户透明。这就是RDD的弹性;
    2. 容错的弹性:数据丢失可自动恢复,RDD的一套算子是一个血统,也就是血统关系,知道每个算子的位置。假如一个节点的RDD Partition失败或宕掉,RDD会通过数据来源重新计算该Partition,这对使用者是透明的);
    3. 计算的弹性:计算出错重试机制;
    4. 分片弹性:根据需求重新分片,即分区。

总之,RDD 是一个 分布式、不可变、带血统的对象集合,支持 延迟计算 和 容错恢复,是 Spark 高层抽象的基础。

相关推荐
鸿乃江边鸟1 天前
Spark Datafusion Comet 向量化Rust Native--CometShuffleExchangeExec怎么控制读写
大数据·rust·spark·native
伟大的大威2 天前
NVIDIA DGX Spark (ARM64/Blackwell) Kubernetes 集群 + GPU Operator 完整部署指南
大数据·spark·kubernetes
小邓睡不饱耶2 天前
深度实战:Spark GraphX构建用户信任网络,精准锁定高价值目标用户(含完整案例)
大数据·spark·php
B站计算机毕业设计超人2 天前
计算机毕业设计hadoop+spark+hive共享单车预测系统 共享单车数据可视化分析 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·python·深度学习·spark·毕业设计·课程设计
B站计算机毕业设计超人2 天前
计算机毕业设计Python+Spark+Hadoop+Hive微博舆情分析 微博情感分析可视化 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·爬虫·python·spark·cnn·课程设计
yumgpkpm2 天前
华为昇腾300T A2训练、微调Qwen过程,带保姆式命令,麒麟操作系统+鲲鹏CPU
hive·hadoop·华为·flink·spark·kafka·hbase
TTBIGDATA2 天前
【Hue】Ambari开启 Kerberos 后,Hue 使用 Spark SQL出现凭证不统一问题处理
大数据·sql·spark·ambari·kerberos·hue·bigtop
鸿乃江边鸟3 天前
Spark Datafusion Comet 向量化Rust Native--Native算子(CometNativeExec)怎么串联执行
大数据·rust·spark·native
Light603 天前
数智孪生,金流·物流全透视:构建某银行制造业贷后风控新范式—— 基于领码 SPARK 融合平台的技术解决方案
大数据·spark·数字孪生·实时监控·物联网金融·供应链风控·ai决策
小邓睡不饱耶4 天前
基于Spark GraphX构建用户信任网络:精准定位高价值目标用户
大数据·spark·php