解析:
答:不是,很多⼈都会以为是action,reduce rdd是action
解析:
具体的task运⾏在那他机器上,dag划分stage的时候确定的
www.aboutyun.com/thread-24246-1-1.html 10/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发
解析:
1)⾃动的进⾏内存和磁盘的存储切换;
2)基于Lingage的⾼效容错;
3)task如果失败会⾃动进⾏特定次数的重试;
4)stage如果失败会⾃动进⾏特定次数的重试,⽽且只会计算失败的分⽚;
5)checkpoint和persist,数据计算之后持久化缓存
6)数据调度弹性,DAG TASK调度和资源⽆关
7)数据分⽚的⾼度弹性,a.分⽚很多碎⽚可以合并成⼤的,b.par
解析:
1).数据检查点,会发⽣拷⻉,浪费资源
2).记录数据的更新,每次更新都会记录下来,⽐较复杂且⽐较消耗性能
RDD通过Linage(记录数据更新)的⽅式为何很⾼效?
解析:
1)lazy记录了数据的来源,RDD是不可变的,且是lazy级别的,且rDD
之间构成了链条,lazy是弹性的基⽯。由于RDD不可变,所以每次操作就
产⽣新的rdd,不存在全局修改的问题,控制难度下降,所有有计算链条
将复杂计算链条存储下来,计算的时候从后往前回溯
900步是上⼀个stage的结束,要么就checkpoint
2)记录原数据,是每次修改都记录,代价很⼤
如果修改⼀个集合,代价就很⼩,官⽅说rdd是
粗粒度的操作,是为了效率,为了简化,每次都是
操作数据集合,写或者修改操作,都是基于集合的
rdd的写操作是粗粒度的,rdd的读操作既可以是粗粒度的
也可以是细粒度,读可以读其中的⼀条条的记录。
3)简化复杂度,是⾼效率的⼀⽅⾯,写的粗粒度限制了使⽤场景
如⽹络爬⾍,现实世界中,⼤多数写是粗粒度的场景
www.aboutyun.com/thread-24246-1-1.html 11/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发