SparkCore快速入门及介绍

什么是RDD

弹性、分布式、数据集(数据存储在内存)
弹性的,RDD中的数据可以保存在内存中或磁盘里面
分布式存储,可以用于分布式计算
集合,可以存放很多元素
一个不可变,可分区,里面的元素可并行计算的集合

RDD的主要属性

  1. 数据集的基本组成但是一个组分片或一个分区列表,每个分片都会被一个计算任务处理,分区数量决定并发度。用户可以在创建RDD是指定RDD的分片个数,如果没有指定,那么久采用默认值(cpu 盒数)
  2. 一个函数会被作用在每一个分区。spark中RDD的计算一分区为单位,函数会被作用到每个分区上
  3. 一个RDD会被依赖于其他对多个RDD。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类型与流水线样的前后依赖关系。在部分分区数据丢失是,spark可以通过可以依赖重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。
  4. KV类型的RDD会有一个partitioner函数非kay-value的RDD的partitioner的值是None,partitioner函数决定了RDD本身的分区数量,也决定了Parent RDD shuffle 输出的分区数量
  5. 每个RDD 维护一个列表,每个partition 的位置存储在一个列表中。

RDD的方法/算子分类

RDD的算子分为两类:

  1. Tarnsformation 转换操作:返回一个新的RDD
  2. Action 动作操作:返回不是RDD(无返回值或其他的)

如何理解spark惰性计算?

  1. RDD中的所以转换都是惰性/延迟执行的,也就是或并不会直接计算。
  2. 遇到Action动作,这些转换才真的运行。
之所以使用惰性求值/延迟执行,是因为这样可以在Action是对RDD操作形成DAG有向无环图进行stage的划分和并行优化,这样设置让spark更加有效运行

发布了88 篇原创文章 · 获赞 99 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/qq_43791724/article/details/105313666