“PySpark实战:用PySpark建立第一个Spark RDD”的版本间的差异
来自CloudWiki
(创建页面,内容为“==何谓RDD== Apache Spark的核心组件的基础就是RDD.所谓的RDD ,即弹性分布式数据集(Resilient Distrbuted Datasets),基于RDD可以实现Apache Sp…”) |
|||
第1行: | 第1行: | ||
==何谓RDD== | ==何谓RDD== | ||
Apache Spark的核心组件的基础就是RDD.所谓的RDD ,即弹性分布式数据集(Resilient Distrbuted Datasets),基于RDD可以实现Apache Spark各个组件在多个计算机组成的集群中进行无缝集成,从而能够在一个应用程序中完成海量数据处理。 | Apache Spark的核心组件的基础就是RDD.所谓的RDD ,即弹性分布式数据集(Resilient Distrbuted Datasets),基于RDD可以实现Apache Spark各个组件在多个计算机组成的集群中进行无缝集成,从而能够在一个应用程序中完成海量数据处理。 | ||
+ | |||
+ | ===与MapReduce比较=== | ||
+ | RDD 相对于MapReduce来说: | ||
+ | *具有更强的计算能力 | ||
+ | *中间结果存于内存中,性能更快 | ||
+ | |||
+ | ===RDD的本质=== | ||
+ | RDD 从本质上说,是一个只读的分区数据集合 | ||
+ | |||
+ | Spark相关操作只需操作RDD即可。 | ||
+ | |||
+ | 一个RDD的不同分区可以保存到Spark集群的不同节点(Work Node)上,从而发挥集群的强大计算能力。 | ||
+ | |||
+ | [[文件:python21062801.png|600px]] | ||
+ | |||
+ | <nowiki> | ||
+ | RDD在计算的时候,每个分区都会起一个task,所以rdd的分区数目决定了总的的task数目。 | ||
+ | 申请的计算节点(Executor)数目和每个计算节点核数,决定了你同一时刻可以并行执行的task。 | ||
+ | |||
+ | |||
+ | 比如的RDD有100个分区,那么计算的时候就会生成100个task,你的资源配置为10个计算节点,每个两2个核,同一时刻可以并行的task数目为20,计算这个RDD就需要5个轮次。如果计算资源不变,你有101个task的话,就需要6个轮次,在最后一轮中,只有一个task在执行,其余核都在空转。 | ||
+ | |||
+ | |||
+ | 如果资源不变,你的RDD只有2个分区,那么同一时刻只有2个task运行,其余18个核空转,造成资源浪费。 | ||
+ | |||
+ | 这就是在spark调优中,增大RDD分区数目(即增大了task数量),增大任务并行度的做法。</nowiki> |
2021年6月28日 (一) 05:48的版本
何谓RDD
Apache Spark的核心组件的基础就是RDD.所谓的RDD ,即弹性分布式数据集(Resilient Distrbuted Datasets),基于RDD可以实现Apache Spark各个组件在多个计算机组成的集群中进行无缝集成,从而能够在一个应用程序中完成海量数据处理。
与MapReduce比较
RDD 相对于MapReduce来说:
- 具有更强的计算能力
- 中间结果存于内存中,性能更快
RDD的本质
RDD 从本质上说,是一个只读的分区数据集合
Spark相关操作只需操作RDD即可。
一个RDD的不同分区可以保存到Spark集群的不同节点(Work Node)上,从而发挥集群的强大计算能力。
RDD在计算的时候,每个分区都会起一个task,所以rdd的分区数目决定了总的的task数目。 申请的计算节点(Executor)数目和每个计算节点核数,决定了你同一时刻可以并行执行的task。 比如的RDD有100个分区,那么计算的时候就会生成100个task,你的资源配置为10个计算节点,每个两2个核,同一时刻可以并行的task数目为20,计算这个RDD就需要5个轮次。如果计算资源不变,你有101个task的话,就需要6个轮次,在最后一轮中,只有一个task在执行,其余核都在空转。 如果资源不变,你的RDD只有2个分区,那么同一时刻只有2个task运行,其余18个核空转,造成资源浪费。 这就是在spark调优中,增大RDD分区数目(即增大了task数量),增大任务并行度的做法。