RDD概述
RDD既弹性分布式数据集,是Spark主要的编程抽象
RDD作为数据结构,本质上是一个只读的分区(partition)记录集合
一个RDD可以包含多个分区,每个分区就是一个dataset片段
RDD编程接口
Spark中提供了通用接口来抽象RDD,具体包括以下四个方面:
分区信息,是数据集的最小分片
依赖关系,指向欺负RDD
函数,基于父RDD的计算方法
划分策略和数据位置的元数据
RDD分区
分区目的:减少网络传输的代价以提高系统的性能
利用Partitions方法可获取RDD划分的分区数
RDD分区分布在集群的节点中,分区数量一定程序就决定了任务的并行的数量
从HDFS文件创建RDD,分区数默认为文件的Block数
RDD首选位置
Spark会尽可能地把计算分配到靠近数据的位置
RDD的分区计算
Spark中RDD的计算以分区为单位,mapPartition等操作可以进行分区计算
RDD的分区函数
Spark中默认提供两种划分器:哈希分区划分器和范围分区