主页 > 新闻资讯 > 大数据学习:Spark RDD概念及特征

大数据学习:Spark RDD概念及特征

作者:张老师 浏览次数: 2021-04-22 17:04
基本上提到Spark,常常被提及的就是其性能优势,相比同是批处理的MapReduce,Spark在实验环境下可做到计算性能提高10-100倍,而Spark计算性能的提升,与其引入的RDD有很大关系。今天的大数据学习分享,我们就主要来讲讲,Spark RDD概念及特征。

大数据学习:Spark RDD概念及特征

RDD为什么是Spark的核心概念

Spark建立在统一抽象的RDD之上,使得Spark可以很容易扩展,比如Spark Streaming、Spark SQL、Machine Learning、Graph都是在spark RDD上面进行的扩展。

RDD是什么呢?理解一下概念:

RDD(Resilient Distributed Dataset):弹性分布式数据集。

RDD是只读的,由多个partition组成。

Partition分区,和Block数据块是一一对应的。

RDD特征

RDD叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合.

Dataset,就是一个集合,存储很多数据。

Distributed,它内部的元素进行了分布式存储,方便于后期进行分布式计算。

Resilient,表示弹性,rdd的数据是可以保存在内存或者是磁盘中。

(1)A list of partitions

一个分区(Partition)列表,数据集的基本组成单位。

这里表示一个rdd有很多分区,每一个分区内部是包含了该rdd的部分数据,

spark中任务是以task线程的方式运行,一个分区就对应一个task线程。

用户可以在创建RDD时指定RDD的分区个数,如果没有指定,那么就会采用默认值。

val rdd=sparkContext.textFile("/words.txt")

如果该文件的block块个数小于等于2,这里生产的RDD分区数就为2

如果该文件的block块个数大于2,这里生产的RDD分区数就与block块个数保持一致

(2)A function for computing each split

一个计算每个分区的函数

Spark中RDD的计算是以分区为单位的,每个RDD都会实现compute计算函数以达到这个目的。

(3)A list of dependencies on other RDDs

一个rdd会依赖于其他多个rdd

这里就涉及到rdd与rdd之间的依赖关系,spark任务的容错机制就是根据这个特性(血统)而来。

(4)Optionally

a Partitioner for key-value RDDs e.g.to say that the RDD is hash-partitioned

一个Partitioner,即RDD的分区函数(可选项)

当前Spark中实现了两种类型的分区函数,一个是基于哈希的HashPartitioner,(key.hashcode%分区数=分区号),另外一个是基于范围的RangePartitioner。

只有对于key-value的RDD,并且产生shuffle,才会有Partitioner,非key-value的RDD的Parititioner的值是None。

(5)Optionally

a list of preferred locations to compute each split on(e.g.block locations for an HDFS file)

一个列表,存储每个Partition的优先位置(可选项)

这里涉及到数据的本地性,数据块位置最优。

spark任务在调度的时候会优先考虑存有数据的节点开启计算任务,减少数据的网络传输,提升计算效率。

关于大数据学习,Spark RDD概念及特征,以上就为大家做了基本的介绍了。RDD于Spark框架而言,是非常重要的核心概念,在初期入门阶段,对于RDD的概念一定要理解到位。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及预约试听可联系客服!
热点排行
推荐文章
立即申请>>