一、什么是RDD

A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. Represents an immutable, partitioned collection of elements that can be operated on in parallel.

弹性分布式数据集(RDD),Spark中的基本抽象。表示可以并行操作的元素的不变分区集合。

  • 弹性:可以存储在磁盘或内存中(多种存储级别)
  • 分布:分布在集群中的只读对象集合(由多个Partition构成)

(一)特性

1、分区

上述定义中也说了RDD是一个抽象的概念,数据是存储在RDD下的Partition分区,这些分区可以分布在一个节点上,也可以分布在不同的节点上。

PySpark之RDD操作

 2、依赖

上述定义中RDD是只读和不可变的,那么如果想要改变其中的值,通过不断创建变量这种方式来实现。比如:

#定义一个变量
x = 2

#改变这个值,此时有多了一个变量y,同时有聊新的值
y = 2x + 1

这样,可以不断创建新的变量,形成血缘依赖关系。

3、缓存

默认是缓存到内存的,但是支持多种缓存策略,可以灵活的进行变更。

(二)核心属性

调度和计算都依赖于这五个属性:

  • 分区列表

RDD是一个抽象的概念,它对应多个Partition,所以有一个分区列表的属性

  • 依赖列表

RDD中的变量是不可变的,它是有一个依赖关系,这与上面的依赖特性进行对应。

  • Compute函数,用于计算RDD各分区的值
  • 分区策略(可选)

数据是如何对应一个RDD中的多个Partition。

  • 优先位置列表(可选,HDFS实现数据本地化,避免数据移动)

 二、RDD的生成

RDD的生成有三种方式,分别是:

  • 从外部文件创建
  • 集合并行化
  • 从父RDD生成子RDD

(一)从外部文件创建

  • 支持本地磁盘文件
  • 支持整个目录、多文件、通配符
  • 支持压缩文件
  • 支持HDFS

读取文件使用的方法是textFile:

textFile(name, minPartitions=None, use_unicode=True)

Read a text file from HDFS, a local file system (available on all nodes), or any Hadoop-supported file system URI, and return it as an RDD of 
Strings.

读取各种本地文件、目录、HDFS的形式:

SC.textFi le(“/1.tXt, /02.tXt“)  #支持多文件,中间以逗号分隔
SC.textFi le(”/*.txt“) #支持通配符
View Code

相关文章:

  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-07-19
  • 2022-12-23
  • 2021-07-17
  • 2021-09-30
猜你喜欢
  • 2021-11-16
  • 2022-01-21
  • 2021-10-30
  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
  • 2021-08-05
相关资源
相似解决方案