这一次我们主要说下RDD,作为Spark中的核心概念

RDD是Spark中分布式数据集的抽象,囊括了所有内存中和磁盘中的分布式数据实体,

上一次我们把RDD比作数组,其实两者是有相似的,但是相比较数组,RDD的数据集是跨进程的,跨节点的,活动范围是整个集群的。

对于RDD,其中具有四大属性,分别是:

partitions: 数据分片

partitioner: 分片切割规则

dependencies: RDD依赖

compute: 转换函数

而如何理解四个属性呢?

对于Spark来说

数据在流转过程中,给予每一个算子的,是一个以分区为单位的RDD数组,其中包含了多个数据

其次是partitioner,分片切割规则,用户明确当一个数据到来之后,应该分配给哪一个算子上进行计算

之后是依赖,就是RDD会通过dependencies属性来依赖的前一个或者多个RDD,称为父RDD,也就是根据dependencies来记录之前属于的哪个RDD

最后是compute,就是将RDD的状态从A转换到B,也就是上一章的从lineRDD转换到wordRDD的map转换函数

按照上一章的流程代码的可以将4大属性对应到代码为:

我们声明的lineRDD和wordRDD对应的就是RDD概念。

具体的流转数据,就是对应的partitions属性

之后的reduceByKey,其中包含了首先根据key进行分区,对应的就是partitioner属性

然后其中每一个RDD中都记录了历史形态,对应的就是dependencies属性

然后其中RDD的转换方法就是其中的compute属性

发表评论

邮箱地址不会被公开。 必填项已用*标注