工作生活

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

上一篇 下一篇

猜你喜欢

热点阅读