Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >大数据入门:Spark RDD基础概念

大数据入门:Spark RDD基础概念

作者头像
成都加米谷大数据
修改于 2020-12-09 09:45:14
修改于 2020-12-09 09:45:14
1K0
举报
文章被收录于专栏:大数据开发大数据开发

Spark框架的核心部分,SparkCore作为平台基础通用执行引擎,重要性自是不必多说。而在SparkCore当中,RDD作为SparkCore的核心抽象,是需要重点搞懂的概念。今天的大数据入门分享,我们就来讲讲Spark RDD入门基础。

Spark框架的核心是SparkCore,而在更深一个层面上,SparkCore的核心就是RDD。SparkCore建立在统一的抽象RDD之上,这使得Spark的各个组件可以随意集成,可以在同一个应用程序中使用不同的组件以完成复杂的大数据处理任务。

RDD设计初衷

RDD,全称Resilient Distributed Datasets,在设计之初是为了解决计算框架对不同应用场景处理效率不高的问题,比如说迭代式算法和交互式数据挖掘。在这两种应用场景中,通过将数据保存在内存中,可以将性能提高到几个数量级。

对于迭代式算法而言,比如PageRank、K-means聚类、逻辑回归等,常常需要重用中间结果;而交互式数据挖掘,常常需要在同一份数据集上运行多个即席查询。

大部分的计算框架(比如Hadoop),使用中间计算结果的方式是将其写入到一个外部存储设备(比如HDFS),这会增加额外的负载(数据复制、磁盘IO和序列化),由此会增加应用的执行时间。

RDD可以有效地支持多数应用中的数据重用,它是一种容错的、并行的数据结构,可以让用户显性地将中间结果持久化到内存中,并且可以通过分区来优化数据的存放,另外,RDD支持丰富的算子操作,用户可以很容易地使用这些算子对RDD进行操作。

RDD基本概念

本质上来说,一个RDD就是一个分布式对象集合,一个只读的、分区的记录集合。每个RDD可以分成多个分区,不同的分区保存在不同的集群节点上。

RDD是一种高度受限的共享内存模型,即RDD是只读的分区记录集合,所以也就不能对其进行修改。只能通过两种方式创建RDD,一种是基于物理存储的数据创建RDD,另一种是通过在其他RDD上作用转换操作(transformation,比如map、filter、join等)得到新的RDD。

RDD不需要被物化,它通过血缘关系(lineage)来确定其是从RDD计算得来的。另外,用户可以控制RDD的持久化和分区,用户可以将需要被重用的RDD进行持久化操作(比如内存、或者磁盘)以提高计算效率。也可以按照记录的key将RDD的元素分布在不同的机器上,比如在对两个数据集进行JOIN操作时,可以确保以相同的方式进行hash分区。

RDD主要特点

①基于内存

RDD是位于内存中的对象集合。RDD可以存储在内存、磁盘或者内存加磁盘中,但是,Spark之所以速度快,是基于这样一个事实:数据存储在内存中,并且每个算子不会从磁盘上提取数据。

②分区

分区是对逻辑数据集划分成不同的独立部分,分区是分布式系统性能优化的一种技术手段,可以减少网络流量传输,将相同的key的元素分布在相同的分区中可以减少shuffle带来的影响。RDD被分成了多个分区,这些分区分布在集群中的不同节点。

③强类型

RDD中的数据是强类型的,当创建RDD的时候,所有的元素都是相同的类型,该类型依赖于数据集的数据类型。

④懒加载

Spark的转换操作是懒加载模式,这就意味着只有在执行了action(比如count、collect等)操作之后,才会去执行一些列的算子操作。

⑤不可修改

RDD一旦被创建,就不能被修改。只能从一个RDD转换成另外一个RDD。

⑥并行化

RDD是可以被并行操作的,由于RDD是分区的,每个分区分布在不同的机器上,所以每个分区可以被并行操作。

⑦持久化

由于RDD是懒加载的,只有action操作才会导致RDD的转换操作被执行,进而创建出相对应的RDD。对于一些被重复使用的RDD,可以对其进行持久化操作(比如将其保存在内存或磁盘中,Spark支持多种持久化策略),从而提高计算效率。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spark基础
1.Spark 使用DAG 调度器、查询优化器和物理执行引擎,能够在批处理和流数据获得很高的性能。2.spark把运算的中间数据(shuffle阶段产生的数据)存放在内存,迭代计算效率更高,mapreduce的中间结果需要落地,保存到磁盘;3.Spark计算框架对内存的利用和运行的并行度比mapreduce高,Spark运行容器为executor,内部ThreadPool中线程运行一个Task,mapreduce在线程内部运行container,container容器分类为MapTask和ReduceTask。Spark程序运行并行度高;
857技术社区
2022/05/17
4590
Spark基础
大数据基础:Spark工作原理及基础概念
导语 | Apache Spark 是专为大规模数据处理而设计的快速通用计算引擎,在数据挖掘和机器学习领域有着广泛的应用,现在也已形成一个高速发展、应用广泛的生态系统。本文将为大家详细介绍 Spark 的核心技术原理,希望与大家一同交流。文章作者:熊峰,腾讯大数据研发工程师。
腾讯云开发者
2020/12/23
1.7K0
大数据基础:Spark工作原理及基础概念
Spark 理论基石 —— RDD
RDD,学名可伸缩的分布式数据集(Resilient Distributed Dataset)。是一种对数据集形态的抽象,基于此抽象,使用者可以在集群中执行一系列计算,而不用将中间结果落盘。而这正是之前 MR 抽象的一个重要痛点,每一个步骤都需要落盘,使得不必要的开销很高。
木鸟杂记
2021/09/26
9320
大数据入门与实战-Spark上手
Apache Spark是一种闪电般快速的集群计算技术,专为快速计算而设计。它基于Hadoop MapReduce,它扩展了MapReduce模型,以便有效地将其用于更多类型的计算,包括交互式查询和流处理。Spark的主要特性是其内存中的集群计算,可以提高应用程序的处理速度。
致Great
2019/03/19
1.1K0
大数据入门与实战-Spark上手
Spark RDD详解 -加米谷大数据
1、RDD是什么 RDD:Spark的核心概念是RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。
加米谷大数据
2018/03/21
1.6K3
Spark RDD编程指南
在高层次上,每个 Spark 应用程序都包含一个驱动程序,该驱动程序运行用户的主要功能并在集群上执行各种并行操作。 Spark 提供的主要抽象是弹性分布式数据集 (RDD),它是跨集群节点分区的元素集合,可以并行操作。 RDD 是通过从 Hadoop 文件系统(或任何其他 Hadoop 支持的文件系统)中的文件或驱动程序中现有的 Scala 集合开始并对其进行转换来创建的。 用户还可以要求 Spark 将 RDD 持久化到内存中,以便在并行操作中有效地重用它。 最后,RDD 会自动从节点故障中恢复。
从大数据到人工智能
2022/04/17
1.6K0
Spark RDD编程指南
大数据干货系列(六)-Spark总结
本文共计1611字,预计阅读时长八分钟 Spark总结 一、本质 Spark是一个分布式的计算框架,是下一代的MapReduce,扩展了MR的数据处理流程 二、mapreduce有什么问题 1.调度慢,启动map、reduce太耗时 2.计算慢,每一步都要保存中间结果落磁盘 3.API抽象简单,只有map和reduce两个原语 4.缺乏作业流描述,一项任务需要多轮mr 三、spark解决了什么问题 1.最大化利用内存cache 2.中间结果放内存,加速迭代 3.将结果集放内存,加速后续查询和处理,解决运行慢
企鹅号小编
2018/01/29
7800
spark RDD 结构最详解
一种简单的解释RDD是横向多分区的(这个数据集包括许多接口),纵向当计算过程中内存不足可刷写到磁盘等外存上,可与外存进行灵活的数据交换。
Tim在路上
2020/08/04
9450
spark RDD 结构最详解
Spark和RDD究竟该如何理解?
本文主要介绍了Spark和RDD的基本概念、特点以及它们之间的关系。Spark是一种基于内存的分布式计算框架,而RDD则是Spark中的一种数据结构。Spark可以高效地处理迭代计算和交互式计算,而RDD则提供了容错性和自动从节点失败中恢复的功能。它们相辅相成,共同实现高效的大数据处理任务。
挖掘大数据
2017/12/22
1.1K0
Spark入门指南:从基础概念到实践应用全解析
在这个数据驱动的时代,信息的处理和分析变得越来越重要。而在众多的大数据处理框架中,「Apache Spark」以其独特的优势脱颖而出。
BookSea
2023/10/20
8380
Spark入门指南:从基础概念到实践应用全解析
Spark入门指南:从基础概念到实践应用全解析
在这个数据驱动的时代,信息的处理和分析变得越来越重要。而在众多的大数据处理框架中,「Apache Spark」以其独特的优势脱颖而出。
BookSea
2023/10/13
3.2K0
Spark初识-弹性分布式数据集RDD
RDD 是 Spark 提供的最重要的抽象概念,它是一种有容错机制的特殊数据集合,可以分布在集群的结点上,以函数式操作集合的方式进行各种并行操作。
栗筝i
2022/12/01
4310
Spark初识-弹性分布式数据集RDD
一篇并不起眼的Spark面试题
spark是借鉴了Mapreduce,并在其基础上发展起来的,继承了其分布式计算的优点并进行了改进,spark生态更为丰富,功能更为强大,性能更加适用范围广,mapreduce更简单,稳定性好。主要区别
大数据真好玩
2021/07/07
4.9K0
【万字长文】Spark最全知识点整理(内含脑图)
Spark有以下四种部署方式,分别是:Local,Standalone,Yarn,Mesos
857技术社区
2022/05/17
3K2
【万字长文】Spark最全知识点整理(内含脑图)
Spark学习笔记
Apache Spark是一个开源集群运算框架,最初是由加州大学柏克莱分校AMPLab所开发。相对于Hadoop的MapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了存储器内运算技术,能在数据尚未写入硬盘时即在存储器内分析运算。Spark在存储器内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上10倍速度。[1]Spark允许用户将数据加载至集群存储器,并多次对其进行查询,非常适合用于机器学习算法。
gigiwangs
2020/06/16
1.2K0
Spark学习笔记
spark RDD
RDD,全称为Resilient Distributed Datasets(弹性分布式数据集),是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。在这些操作中,诸如map、flatMap、filter等转换操作实现了函数式编程模式,很好地契合了Scala的集合操作。除此之外,RDD还提供了诸如join、groupBy、reduceByKey等更为方便的操作(注意,reduceByKey是action,而非transformation),以支持常见的数据运算。
小石头
2022/11/10
5130
spark RDD
大数据知识总结(七):Spark重要知识汇总
RDD(Resilient Distributed Dataset)弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变、可分区、里面的元素可并行计算的集合。
Lansonli
2025/05/24
2330
大数据知识总结(七):Spark重要知识汇总
相关推荐
Spark基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档