RDD,分布式数据集,是Spark中最基本的数据抽象。

一、什么是RDD

RDD(Resilient Distributed Dataset)叫做分布式数据集,是 Spark 中最基本的数据抽象。

代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。

二、RDD的属性

① 一组分区(Partition),即数据集的基本组成单位;
② 一个计算每个分区的函数;
③ RDD 之间的依赖关系;
④ 一个 Partitioner,即RDD的分片函数;
⑤ 一个列表,存储存取每个 Partition 的优先位置(preferred location)

三、RDD的特点

RDD 表示只读的分区的数据集,对RDD进行改动,只能通过 RDD 转换操作,由一个RDD得到一个新的RDD,新的RDD包含了从其他RDD衍生所必需的信息。

RDDs 之间存在依赖,RDD的执行是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化 RDD 来切断血缘关系。

(1)分区

RDD 逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个 compute 函数得到每个分区的数据。

如果RDD是通过已有的文件系统创建,则 compute 函数是读取指定文件系统中的数据,如果 RDD 是通过其他 RDD转换而来,则 compute 函数是执行转换逻辑将其他 RDD 的数据进行转换。

(2)只读

RDD 是只读的,要想改变RDD中的数据,只能在现有的RDD基础上创建新的RDD。

由一个 RDD 转换到另一个 RDD,可以通过丰富的操作算子实现,不再像 MapReduce 那样只能写 map 和 reduce

RDD 的操作算子包括两类:

一类叫做transformations,它是用来将 RDD 进行转化,构建 RDD 的血缘关系;

另一类叫做 actions,它是用来触发 RDD 的计算,得到 RDD 的相关计算结果或者将 RDD 保存到文件系统中。

(3)依赖

RDDs 通过操作算子进行转换,转换得到的新 RDD 包含了 从其他 RDDs 衍生所必需的信息,RDDs 之间维护着这种血缘关系,也称之为依赖。

依赖包括两种:

一种是窄依赖,RDDs 之间分区是一一对应的,

另一种是宽依赖,下游的RDD的每个分区与上游RDD(也称之为父RDD)的每个分区都有关,是多对多关系。

(4)缓存

  如果在应用程序中多次使用同一个 RDD,可以将该RDD缓存起来,该RDD只有在第一次计算的时候会根据血缘关系得到的分区的数据,在后续其他地方用到该RDD的时候,会直接从缓存处而不用再根据血缘关系计算,这样就加速后期的重用。

(5)checkpoint

  虽然 RDD 的血缘关系天然地可以实现容错,当 RDD 的某个分区数据失败或丢失,可以通过血缘关系重建。但是对于长时间迭代型应用来说,随着迭代的进行,RDDs 之间的血缘关系会越来越长,一旦在后续迭代过程中出错,则需要通过非常长的血缘关系去重建,势必影响性能。为此,RDD 支持 checkpoint 将数据保存到持久化的存储中,这样就可以切断之前的血缘关系,因为 checkpoint 后的RDD不需要知道它的父 RDDs了,它可以从 checkpoint 处 拿到数据。

— 要养成终身学习的习惯 —

Spark - [03] RDD概述的更多相关文章

  1. 【Spark】Day02:Spark-Core:RDD概述、RDD编程(转换算子、Action)、序列化、依赖关系、持久化、数据读取保存、累加器、广播变量、top10、转化率

    总结:https://www.cnblogs.com/qingyunzong/p/8899715.html 一.RDD概述 1.引入:IO流 按行.按字节.字节缓冲 调用read方法读取流,均为惰性加 ...

  2. 关于Spark中RDD的设计的一些分析

    RDD, Resilient Distributed Dataset,弹性分布式数据集, 是Spark的核心概念. 对于RDD的原理性的知识,可以参阅Resilient Distributed Dat ...

  3. spark中RDD的转化操作和行动操作

    本文主要是讲解spark里RDD的基础操作.RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当 ...

  4. [转]Spark学习之路 (三)Spark之RDD

    Spark学习之路 (三)Spark之RDD   https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...

  5. Spark学习之路 (三)Spark之RDD

    一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...

  6. [Spark RDD_1] RDD 基本概念

    0. 说明 RDD 概述 && 创建 RDD 的方式 && RDD 编程 API(Transformation 和 Action Operations) &&a ...

  7. 弹性分布式数据集RDD概述

      [Spark]弹性分布式数据集RDD概述 弹性分布数据集RDD RDD(Resilient Distributed Dataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作 ...

  8. 08、Spark常用RDD变换

    08.Spark常用RDD变换 8.1 概述 Spark RDD内部提供了很多变换操作,可以使用对数据的各种处理.同时,针对KV类型的操作,对应的方法封装在PairRDDFunctions trait ...

  9. Spark之RDD

    Spark学习之路Spark之RDD 目录 一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数 ...

  10. Spark RDD :Spark API--Spark RDD

    一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...

随机推荐

  1. 上位机与MES数据交互的常用方案

    一.前言 随着工业自动化水平的不断提高,我们在做上位机开发的时候,会经常涉及到与MES进行数据交互. 上位机与MES(Manufacturing Execution System,制造执行系统)之间的 ...

  2. IOS打开对应后缀文件

    IOS打开对应后缀文件 通过ShareExtension打开 点击文件共享后出现的上方列表,如下图 在 info.plist 中添加 Document types <key>CFBundl ...

  3. Visual Studio C++ 汇编 混合编程

    Visual Studio C++ 汇编 混合编程 实验要求 请用汇编语言编写实现GCD递推公式的子程序,对入口和出口参数形式不做要求,但需要用 C 语言函数来获取输入.调用汇编递推子程序,并且用 C ...

  4. 如何在 Ubuntu 20.04 上安装 MySQL

    https://dev.mysql.com/downloads/mysql/ 简介: MySQL是最流行的开源关系数据库管理系统.它速度快,容易使用,容易扩展,并且流行的LAMP和LEMP的一部分. ...

  5. 代码依赖包安全漏洞检测神器 —— Dependency Check

    目前各个企业对于应用的安全越来越重视,而解决应用漏洞的本质是从代码安全抓起.通常关于代码的安全问题有两类:代码本身的安全问题和代码依赖包存在的安全问题.对于代码本身的安全问题,我们可以通过静态代码分析 ...

  6. 痞子衡嵌入式:MCUXpresso for VS Code开发环境搭建及SDK工程导入

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso for VS Code开发环境搭建及SDK工程导入. MCUXpresso IDE(包括其前身 LPCXpress ...

  7. C#中使用泛型对象(List<T>)对xml文件中的重复节点进行的序列化和反序列化

    本文描述将对象(List<T>)序列化到 XML 文档中和从 XML 文档中反序列化为对象(List<T>). 命名空间: System.Xml.Serialization 程 ...

  8. Win7/8/10操作系统之间通过“映射网络驱动器”映射共享目录或者网络磁盘,有的可以映射成功,有的不成功的原因和终极解决办法

    Win7/8/10操作系统相互之间通过"映射网络驱动器"映射共享目录或者网络磁盘,有的可以映射成功,有的不成功 原因: 待添加映射驱动器的计算机的"网络发现"和 ...

  9. 大型IM稳定性监测实践:手Q客户端性能防劣化系统的建设之路

    本文来自腾讯手Q基础架构团队杨萧玉.邱少雄.张自蹊.王褚重天.姚伟斌的分享,原题"QQ 客户端性能稳定性防劣化系统 Hodor 技术方案",下文进行了排版和内容优化. 1.引言 接 ...

  10. IM跨平台技术学习(十二):万字长文详解QQ Linux端实时音视频背后的跨平台实践

    本文由QQ音视频团队贺坤分享原题"Linux QQ能打语音视频了!一文详解背后技术实现!",下文进行了排版和内容优化等. 1.引言 2024年6月6日,QQ For Linux 3 ...