00_pyspark_什么是RDD

Spark基础知识:理解RDD及其特性
RDD是Spark中的核心数据抽象,代表不可变、可分区的分布式数据集。它解决了分布式计算中的分区控制、Shuffle操作、数据存储和计算API等问题。每个RDD由分区列表、计算每个分区的函数、依赖于其他RDD的关系、可选的分区器和首选计算位置组成。默认使用Hash分区规则,可手动设置分区器。RDD设计考虑了数据本地性,以优化性能。

什么是RDD

分布式计算会带来的问题有:

  1. 分区控制
  2. Shuffle控制
  3. 数据存储\序列化\发送
  4. 数据计算API
  5. 等一系列的问题

这些功能不能使用python内置的本地集合对象(List\字典等)去完成,我们在分布式框架中,需要有一个统一的数据抽象的对象,来实现上述分布式计算所需要的功能
这个对象就是RDD
RDD(Reslient Distributed Dataset):弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变的,可分区,里面的元素可并行计算的集合。Distributed分布式,RDD中数据的存储是分布式存储的(RDD的数据是跨越机器来存储的跨进程)

Internally,each RDD is characterized by five main properties:

  1. A list of partitions
  2. A function for computing each split (计算方法都会作用到每一个分片(分区)之上)
  3. A list of dependencies on other RDD (RDD之间有依赖关系)
  4. Optionally, a Partitioner for key-value RDDs
  5. Optionally, a list of preferrd location to compute each split on (RDD分区数据的读取会尽量数据读取所在地)

RDD中的分区是RDD数据存储的最小单位,分区是物理概念,以多个分区物理的对象抽象成一个逻辑上的概念RDD。

import findspark

findspark.init()
from pyspark import SparkContext, SparkConf

conf = SparkConf().setAppName("rdd_init").setMaster("local[*]")
sc = SparkContext(conf=conf)

rdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7], 3)

print(rdd.glom().collect())

在这里插入图片描述
Key-Value型的RDD是可以分区器,默认分区器:Hash分区规则,也可以手动设置一个分区器(rdd.partitionBy的分区方法来设置),这个特性是可能吗,因为不是所有的RDD都是k-v型的;
RDD的分区规划,会尽量靠近数据所在的服务器,这样可以走本地读取,避免网络读取,本地读取的性能是大于网络读取的性能,spark会在确保并行计算的能力的前提下,尽量的去确保本地读取,所以这个特性也是可能的。

PySpark RDD是一种分布式的数据集,它是PySpark的核心抽象之一。RDD代表弹性分布式数据集(Resilient Distributed Dataset),它是由一系列分区组成的可并行处理的集合。RDD可以包含任何类型的对象,并且可以在集群上进行并行操作。 PySpark RDD可以通过不同的方式创建,其中一种常见的方式是使用`sc.parallelize`方法,该方法可以将Python列表、NumPy数组或Pandas Series/Pandas DataFrame转换为Spark RDD。例如,通过以下代码可以使用列表创建一个RDD: ```python rdd = sc.parallelize([1, 2, 3, 4, 5]) ``` 这将创建一个名为`rdd`的RDD对象,其中包含了列表中的元素。RDD支持各种转换和操作,例如映射、过滤、排序和聚合等。你可以使用这些操作来对RDD进行变换和计算,最终得到你想要的结果。 PySpark提供了丰富的文档来帮助你了解RDD的更多细节和使用方法。你可以参考Spark官方网站的RDD编程指南和PySpark官方文档,它们提供了详细的介绍和示例代码,帮助你更好地理解和使用PySpark RDD。 总结起来,PySpark RDD是一种分布式的可并行处理的数据集,它可以通过不同的方式创建,例如使用`sc.parallelize`方法。RDD支持各种转换和操作,它是PySpark中非常重要的概念之一。 参考文献: Spark官方网站 - RDD编程指南:http://spark.apache.org/docs/latest/rdd-programming-guide.html PySpark官方文档:https://spark.apache.org/docs/latest/api/python/index.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值