Spark常见问题

stage是如何划分的,为什么要划分stage

根据RDD之间的依赖关系,将Job划分为不同的stage,一个宽依赖就是一个stage。一个stage就是一个TaskSet,将stage根据不同分区划分为一个个task任务。

移动计算而不是移动数据。保证一个stage内不会发生数据的移动。

行动算子和转换算子

行动算子,触发任务的调和任务的执行。collect,reduce,take,count

转换算子,将旧RDD封装成新RDD。 map,filter,flatMap,groupBy

reduceByKey和groupByKey的区别

reduceBykey根据key,对value数据进行轻聚合,在shuffle之前,进行了combinner的操作,这样减少到了数据的迁移量。

groupByKey是根据key对数据进行分组,直接进行shuffle。

在不影响业务逻辑的前提下,优先使用reduceByKey.

repartition和coalsece的区别

两个RDD都涉及到分区的变化,repartition是coalesce的特例,底层调用的就是coalsece,repartition涉及到分区的变化必定会产生shuffle。而coalsece默认情况下是不会产生shuffle的,只有更改第二个参数为true,分区才会有shuffle。正常情况下增加分区用repartition,减少分区用coalesce。

cache或者persist缓存跟checkPoint检查点的区别

共同点:三者都是必须执行到行动算子才会触发

不同点:存储位置的差异

cache或者persist缓存是将数据存储在内存或者本地磁盘上的,可靠性相对比较低。而checkPoint是将数据存储在hdfs高容错高可用的分布式文件系统上面,安全性高。

不同点:依赖关系

cache或者persist只是保存数据在内存中,并不会切断RDD之间的血缘关系,而checkPoint是会切断血缘关系的。

不同点:生命周期

cache或者persist在程序结束后,就会自动删除,而checkPonit是永久保存的不会删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值