spark 中 宽依赖 和 窄依赖的 区别及优缺点

窄依赖与宽依赖的概述:

rdd 中的--宽依赖---父RDD每个分区的数据可能被多个子RDD分区使用 ,子RDD分区通常对应所有的父RDD分区,这其中分为两种情况:1,一个父RDD的分区对应所有的子RDD的分区(没有core-patitioned过的join)2,一个父RDD分区对应非全部的的多个RDD分区(groupByKey)

rdd中的--窄依赖---父RDD每个分区的只被子RDD的一个分区使用,子RDD 通常对应常数个父RDD分区,这其中分为两种情况:1,一个子RDD分区对应一个父RDD分区(filter,map)2,一个子RDD分区对应多个父RDD分区(co-partitioned过的join)

窄依赖与宽依赖的优缺点:

宽依赖----有shuffle----要跨网络拉去数据-----耗资源,窄依赖----一个节点内完成转化-----快速

当子RDD 需要重算时,宽依赖 会重算所有父RDD分区的数据,这样会出现多余的重算,窄依赖只需计算对应的一个父RDD的数据即可

窄依赖:filter map flatmap mapPartitions

宽依赖:reduceByKey grupByKey combineByKey

猜你喜欢

转载自blog.csdn.net/qq_21918145/article/details/80859177