Spark 中的RDD是什么东东?为什么需要它?

Spark Streaming系列-3、DStream是什么东东? Spark Streaming 中流式数据结构 DStream 阅读详情

原文链接:https://dzone.com/articles/what-is-rdd-in-spark-and-why-do-we-need-it


Spark 中的RDD是个什么东东,我们为什么需要它?



就快速执行诸如机器学习这样的迭代处理算法而言,Apache Spark 已经在通常情况下赶超了Hadoop(MapReduce),因为它提供了非常多的好处。


这篇博文中,我们将会试着去理解到底是什么让spark RDD在批处理分析中如此的有用。


1为什么是RDD?

当提到分布式迭代计算,例如,通过多个job的计算来处理数据,类似有逻辑回归,K-means聚类,Page rank算法,在多个job中重用或者共享数据,又或者你可能希望在一个共享数据集中执行多个即席查询,这些都相当普遍。


在现有的分布式计算系统(比如MapReduce)中实现数据重用和数据共享有一个潜在的问题,即你需要将一些中间结果数据存储在稳定的分布式存储中,比如说HDFS或者Amazon S3。这就使得整个job的计算非常缓慢,因为它在处理过程中涉及到很多的IO操作,数据复制和数据序列化操作。



MapReduce中的迭代处理


RDDs ,试图在分布式内存计算中启用容错机制来解决这些问题。



Spark中的迭代处理


现在,让我们看一下RDD到底是什么以及它怎样实现容错的。


2RDD ——弹性分布式数据集

RDDs 是不可改变的并且已分区的记录集合,它只能够通过类似map,filter,group by等等粗粒度的操作所创建,这意味着,这些操作是被应用到数据集中的所有元素上的。RDDs 只能够通过从一个诸如HDFS这样的稳定存储中读取数据而创建,或者通过在现有RDDs上的转换操作来创建。


现在,它是怎样起到容错的作用呢?


由于RDDs是通过一系列转换操作创建的,它记录了这些转换操作,而并不是真正的数据。产生一个RDD的转换操作组成的图谱被叫做Lineage Graph。


例如:firstRDD=spark.textFile("hdfs://...")secondRDD=firstRDD.filter(someFunction);thirdRDD = secondRDD.map(someFunction);



Spark RDD Lineage Graph


为了防止我们丢失RDD的一些分区,我们可以在那个丢失的分区上重新运行lineage中的转换操作来实现同样的计算,而不是跨越多个节点重新复制数据。这个特点是RDD最大的利益所在,因为它在数据管理和数据复制方面节省了很多努力,并因此实现了更加快速的计算性能。


HDRP shader 获取阴影(Custom Pass) Unity:2021.3.0f1 HDRP:12.1.6 阅读详情

相关推荐

微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题

微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题

weixin_42028275的博客 1502

RDD深入讲解

1.RDD的作用 (1)让开发者大大降低开发分布式应用程序的门槛以及提高执行效率(特指和其他框架做对比) 例如:其他框架你要考虑数据的拆分、通信机制、作业挂了如何处理、作业调度、序列化等等。但是这些在RDD中直接通过map、reduce就可以完成了。 2.什么是RDD? (1)RDD:  Resilient Distributed dataset(弹性  分布式  数据集) 弹性:体现在...

qq_42064119的博客 642

【两方演化博弈代码复现】:双方演化博弈的原理、概率博弈仿真、相位图、单个参数灵敏度演化

演化博弈论是研究个体在特定环境中如何通过策略选择与其他个体进行互动的学科。这一理论在生物学、经济学和社会科学等多个领域都有广泛应用。本文将深入探讨双方演化博弈的原理及其过程,并解读一段 MATLAB 代码,展示如何模拟这一过程。

当回首往事的时候,不会因虚度年华而悔恨,也不会因碌碌无为而羞愧。 6202

如何理解Spark中血统(RDD)的概念?它的作用是什么?

概念:RDD是弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变,可分区、里面的元素可并行计算的集合。 作用: 提供了一个抽象的数据模型,将具体的应用逻辑表达为一系列转换操作(函数)。另外不同RDD之间的转换操作之间还可以形成依赖关系,进而实现管道化,从而避免了中间结果的存储,大大降低了数据复制、磁盘IO和序列化开销,并且还提供了更多的API(map/filter/groupBy…)。 RDD在Lineage依赖方面分为两种Narrow Dependencies与Wide Dependenci

星空下的那个人影 2023

AI 赋能测试全生命周期:多 Agent 协同的自动化提效方案

本文提出了一种基于Coze平台的多Agent协同测试解决方案,旨在解决软件测试中PRD解析不清晰、测试点覆盖不全、用例编写效率低、代码生成耗时等痛点。通过PRD优化、测试点生成、测试用例生成和单元测试框架生成四个Agent的协同工作,结合Cursor工具实现从需求到代码的全链路自动化。以电商平台登录模块为例,展示了从模糊PRD到标准化测试用例和可执行Java单元测试代码的完整转化流程。该方案通过AI赋能显著提升测试效率,减少人工干预,实现测试覆盖率≥95%,为快速迭代的软件研发提供了高效的测试自动化支持。

QINJIEEE的博客 1106

华为OD面试八股文嵌入式C语言基础问题及答案(一)

本文总结了C语言编程中的10个关键知识点:1.宏定义MIN的实现方法;2.嵌入式无限循环的两种写法;3.变量a的8种不同定义方式;4.static关键字的三种作用;5.const关键字的含义和使用场景;6.volatile关键字的含义及三个应用实例;7.变量存储位置(栈区、静态区、堆区);8.32位系统指针位数;9.局部与全局变量重名规则;10.引用与指针的三点区别。这些内容涵盖了宏定义、变量声明、存储类别、指针等C语言核心概念,对嵌入式开发和系统编程具有重要参考价值。

m0_50382756的博客 160

Spark之RDD详解

RDD论文 特点: 一系列的分区,有编号有顺序 每一个切片都有一个函数用于数据处理 RDD和RDD之间存在依赖关系 (可选的)k-v类型的RDD会有一个分区器,默认的时hash-partitioned (可选的)如果是从HDFS中读取数据,会得到数据的最有位置(向NameNode请求元数据) 分类 算子 important foreach Action executor foreachPartition Action aggregate Action a...

qq_36964872的博客 1228

c++ webrtc基础(1) :webrtc源码下载与编译、项目模块介绍、学习资料推荐

本篇博客介绍webrtc源码的下载与编译,以及推荐webrtc学习资料。 源码下载 电脑环境:win10/win11 64bit,合理的上网环境,没有合理的网络环境无法拉取、下载webrtc代码和工具,宽带速度要快,尽量50M. 主要步骤如下: (1) 安装git (2) 打开cmd控制台,下载google开发工具depot_tools: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git (3) 新建一个目

琅嬛福地 3299

Spark中,RDD概述(五大属性,弹性介绍,5个特性)

RDD特性

fafa_1111的博客 9389

Codex 100个真实案例 - 用AI自动生成API测试用例(接口测试全覆盖)

API 测试是保障后端质量的关键环节,但手写测试用例既枯燥又容易遗漏。本案例将展示如何用 Codex 从 Swagger/OpenAPI 规范文档自动生成 pytest 测试用例——包括正常流程测试、边界值测试、异常参数测试、性能压力测试,还能自动生成 Mock 数据和精美的 HTML 测试报告。全程自然语言驱动,让 API 测试覆盖率从 0 飙到 90%+!

yueyeguzhuo的专栏 271

使用 PLS 回归进行近红外光谱的异常值检测

在光谱数据中,并非每个数据点都是有效的,因此,在构建模型时找到与大部分数据不符合的数据点是一种必要的操作。这些数据我们称之为。在这篇文章中,我们将使用PLS回归进行红外光谱数据的异常值检测。

qq_44204759的博客 1424

什么是 RDD ?

Spark 中最基本的数据抽象是 RDD。 RDD:弹性分布式数据集 (Resilient Distributed DataSet)。 1,RDD 有三个基本特性 这三个特性分别为:分区,不可变,并行操作。 a, 分区 每一个 RDD 包含的数据被存储在系统的不同节点上。逻辑上我们可以将 RDD 理解成一个大的数组,数组中的每个元素就代表一个分区 (Partition) 。 在物理存储中,每个分区...

weixin_34179968的博客 695

Android15音频进阶之AudioReach架构agmcap bringup调试(一百二十三)

本篇目的:Android15音频进阶之AudioReach架构agmcap录音调试。

Android系统攻城狮 2232

spark RDD 五大特性

1、有一个分片列表,能够被切分,就是和Hadoop一样,能被切分的数据才能并行操作。         2、有一个函数计算每一个分片,compute函数。         3、对其他的RDD的依赖列表,依赖又分为宽依赖和窄依赖,但不是所有的RDD都有依赖。         4、可选,key-value型的RDD是根据哈希来分区的,类似于mapreduce的Paritioner接口,控制key分

qq68438的博客 2549

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spark源码系列(二)RDD详解

http://www.cnblogs.com/cenyuhai/p/3779125.html 最近在阅读源码,发现这篇博客内容非常好,有助于快速理解代码。 1、什么是RDD? 上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。 RDD的全名是Resilien

心中永远的正能量 7024

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Spark 源码系列(二)RDD 详解

1、什么是 RDD? 上一章讲了 Spark 提交作业的过程,这一章我们要讲 RDD。简单的讲,RDD 就是 Spark 的 input,知道 input 是啥吧,就是输入的数据。 RDD 的全名是 Resilient Distributed Dataset,意思是容错的分布式数据集,每一个 RDD 都会有 5 个特征: 1、有一个分片列表。就是能被切分,和 hadoop 一样的,能够切分的数据才...

weixin_33887443的博客 147

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spark RDD详解

http://www.cnblogs.com/cenyuhai/p/3779125.html   最近在阅读源码,发现这篇博客内容非常好,有助于快速理解代码。       1、什么是RDD?   上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。 RDD的全名是Resilient Dist

xiaomin1991222的专栏 266

Spark RDD与共享变量简介

hadoop有两个东东:HDFS(存储)和MapReduce(计算)。MapReduce计算比较慢,于是Spark(速度是MR的10~100倍)出现了。Spark有两个核心的概念:弹性分布式数据集RDD与共享变量。下面进行一下简单的介绍。 弹性分布式数据集(RDD)获得方式:1 并行化驱动程序内的集合; 2 从外部数据集加载。 1 并行化驱动程序内的集合code demo val d

lovemelovemycode的专栏 2793

Spark源码系列(二)RDD详解 - 岑玉海

1、什么是RDD? 上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。 RDD的全名是Resilient Distributed Dataset,意思是容错的分布式数据集,每一个RDD都会有5个特征: 1、有一个分片列表。就是能被切分,和hadoop一样的,能够切分的数据才能并行计算。

wisgood的专栏 1235

从HadoopRDD生成各个阶段的RDD 源码详解

1、什么是RDD? 上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。 RDD的全名是Resilient Distributed Dataset,意思是容错的分布式数据集,每一个RDD都会有5个特征: 1、有一个分片列表。就是能被切分,和hadoop一样的,能够切分的数据才能并行计算。

2625
上一篇: Spark RDD API详解 Map和Reduce
下一篇: 对于REST中无状态(stateless)的一点认识
! 不再维护
博客等级 码龄11年 63粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值