【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②

三,深入RDD

RDD本身是一个抽象类,具有很多具体的实现子类:

RDD都会基于Partition进行计算:

 

默认的Partitioner如下所示:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第1张图片

其中HashPartitioner的文档说明如下:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第2张图片

另外一种常用的Partitioner是RangePartitioner:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第3张图片

RDD在持久化的需要考虑内存策略:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第4张图片

Spark提供很多StorageLevel可供选择:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第5张图片

 

于此同时Spark提供了unpersistRDD:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第6张图片

对RDD本身还有一个非常重要的CheckPoint操作:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第7张图片

其中doCheckpoint的细节如下:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第8张图片

NewHadoopRDD为例,其内部的信息如下所示:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第9张图片

WholeTextFileRDD为例,其内部的信息如下所示:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第10张图片

RDD在产生作业调用的时候,经典的过程如下所示:

【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②_第11张图片

 

你可能感兴趣的:(【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②)