RDD学习

首先介绍一下RDD.

RDD是spark中最基础的逻辑抽象,代码中是一个抽象类。它代表不可变,可分区,里面的元素可并行计算的集合。

不可变代表RDD作为计算逻辑的一部分,绝对不允许被修改。

可分区代表,RDD作为承载数据流的类型,必须要在大数据时代实现并行处理的前提条件---分区。

里面的元素可并行计算代表的是分区数据可以发给不同的executor,这样可以实现并行处理。

RDD作为一个抽象类,有一些属性。

a list of partions 就是分区的意思。

a function for computing each split 就是为了确定将数据分给那个分区。

a list of dependencies on other RDD,依赖关系,这里面可以参考java io流,RDD和它比较相似。为了读取一个文件,需要进行多种inputstream的包装。

a partitioner for key-value RDDs.  就是一系列的分区。

a list of prefered location to compute each split  对于每个分区中的数据最好放到哪个计算单元上,一般是最近原则。因为这样数据传输速度效率高呀!

 

接下来是算子的概念,其实算子就是函数。操作RDD的函数。有些是将RDD转换为其他的rdd的转换算子,一些是进行处理操作的行动算子。

RDD有三种创建方式。从集合中创建,从外部存储创建,从其他RDD转化。

 

RDD的创建

posted @ 2020-07-01 18:17  随意无心  阅读(148)  评论(0)    收藏  举报