Spark RDD和普通集合的区别
2019-07-04 本文已影响0人
不愿透露姓名的李某某
RDD中存放计入的是描述信息(从哪里读取数据,以后对数据如何进行计算),RDD的方法分为两类Transformation(lazy(懒加载))、Action(生成Task,并发送到Excutor中执行)
Scala存储的是真正要计算的数据、执行方法后立即返回的结果
RDD的特点:
1.一系列分区(一个RDD里有很多分区,分区是有编号的)
2.每一个输入切片有一个函数作用在上面
3.RDD和RDD之间有存储依赖关系(是父依赖调用上面方法,传入哪些函数得到的)
(1)宽依赖:一个父依赖有多个子依赖,多个子依赖调用父依赖的partition,例如groupByKey、reduceByKey、sortByKey(超生家庭)
(2) 窄依赖:指每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如map、filter、union等操作都会产生窄依赖;(独生子女)
4.(可选)RDD中如果存储的是KV,shuffle是会有一个分区器,模式Hash partitioner
5.(可选)RDD如果读取的是HDFS中的数据,那么会有一个最优位置
一个分区对应一个Task(在同一个Stage),一个分区对应的Task只能在一台机器里面(在Executor),一台机器可以有多个分区对应的Task