Spark - [03] RDD概述
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概述的更多相关文章
- 【Spark】Day02:Spark-Core:RDD概述、RDD编程(转换算子、Action)、序列化、依赖关系、持久化、数据读取保存、累加器、广播变量、top10、转化率
总结:https://www.cnblogs.com/qingyunzong/p/8899715.html 一.RDD概述 1.引入:IO流 按行.按字节.字节缓冲 调用read方法读取流,均为惰性加 ...
- 关于Spark中RDD的设计的一些分析
RDD, Resilient Distributed Dataset,弹性分布式数据集, 是Spark的核心概念. 对于RDD的原理性的知识,可以参阅Resilient Distributed Dat ...
- spark中RDD的转化操作和行动操作
本文主要是讲解spark里RDD的基础操作.RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当 ...
- [转]Spark学习之路 (三)Spark之RDD
Spark学习之路 (三)Spark之RDD https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...
- Spark学习之路 (三)Spark之RDD
一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...
- [Spark RDD_1] RDD 基本概念
0. 说明 RDD 概述 && 创建 RDD 的方式 && RDD 编程 API(Transformation 和 Action Operations) &&a ...
- 弹性分布式数据集RDD概述
[Spark]弹性分布式数据集RDD概述 弹性分布数据集RDD RDD(Resilient Distributed Dataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作 ...
- 08、Spark常用RDD变换
08.Spark常用RDD变换 8.1 概述 Spark RDD内部提供了很多变换操作,可以使用对数据的各种处理.同时,针对KV类型的操作,对应的方法封装在PairRDDFunctions trait ...
- Spark之RDD
Spark学习之路Spark之RDD 目录 一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数 ...
- Spark RDD :Spark API--Spark RDD
一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...
随机推荐
- 圆梦:借助云开发 CloudBase实现你的游戏开发梦想
最近我发现AI产品在不断涌现新动向,尤其是一些技术巨头推出的创新产品.例如,今天我们要探讨的是腾讯云开发的云开发 CloudBase,如果你之前没有听说过这个名字,那可能还记得腾讯云推出的另一个产品- ...
- ArkTs布局入门05——栅格布局(GridRow/GridCol)
1.概述 栅格布局是一种通用的辅助定位工具,对移动设备的界面设计有较好的借鉴作用.主要优势包括: 提供可循的规律:栅格布局可以为布局提供规律性的结构,解决多尺寸多设备的动态布局问题.通过将页面划分为等 ...
- Shiro简单入门+个人理解(3)
最后一天,对shiro框架的应用也到此为至了,可能不是太全,但相对于一般的项目,它的作用已经使用了很多了 Shiro的授权: 授权:对用户资源访问的授权(是否允许用户访问此资源) 用户访问系统资源时的 ...
- GraphQL Part VII: 实现数据变更
我们已经可以使用各种方式来获取数据了.但是如何修改服务器端的数据呢?包括数据插入,修补,删除或者更新等等.GraphQL 的 mutation 就是负责这部分的. 在我们继续之前,我想对项目做一点调整 ...
- Mac中nginx的默认安装路径和启动方式
1.安装完以后,可以在终端输出的信息里看到一些配置路径: /usr/local/etc/nginx/nginx.conf (配置文件路径) /usr/local/var/www (服务器默认路径) / ...
- Qt编写安防视频监控系统66-子模块10网页浏览
一.前言 网页浏览模块,用于传入一个网页地址,打开对应的网页进行浏览,可用于网页展示信息,支持多个,可以自行增加,代码中演示了一个.此模块的用途属于添砖加瓦润色用的,比如有一个牛逼的3D网页,机器人. ...
- 【Windows 开发环境配置——C++ 篇】VSCode+MSVC/MinGW/Clangd/LLDB+Xmake
环境安装 Microsoft Visual Studio 这里以Visual Studio 2022为例,在Visual Studio 2022 版本发行说明 | Microsoft Learn选择所 ...
- 零基础入门:基于开源WebRTC,从0到1实现实时音视频聊天功能
本文由微医云技术团队前端工程师张宇航分享,原题"从0到1打造一个 WebRTC 应用",有修订和改动. 1.引言 去年初,突如其来的新冠肺炎疫情让线下就医渠道几乎被切断,在此背景下 ...
- Apgar score
Apgar score Apgar is a quick test performed on a baby at 1 and 5 minutes after birth. The 1-minute s ...
- 关于存入sessionStorage中boolean值拿出来为字符串
上面是html部分,然后定义了变量 定义方法 在mounted中获取,然后刷新页面,打印类型为字符串 解决办法