Spark-RDD最基本的依赖关系.pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spark 最基本的依赖关系——宽窄依赖 在Spark 中,不同的RDD 之间具有依赖的关系。RDD 与它所依赖的RDD 的依赖 关系有两种类型,分别窄依赖(narrowdependency )和宽依赖(widedependency )。 窄依赖指父RDD 的每一个分区最多被一个子RDD 的分区使用,即 OneToOneDependencies 。窄依赖的表现一般分为两类,类表现为一个父RDD 的分 区对应于一个子RDD 的分区;第二类表现为多个父RDD 的分区对应于一个子 RDD 的分区。也就说,一个父RDD 的一个分区不可能对应一个子RDD 的多个分 区。为了便于理解,们通常把窄依赖形象的比喻为独生子女。当RDD 执行map 、 filter 及union 和join 操作时,都会产生窄依赖,如图 1 所示。 图1NarrowDependencies 窄依赖 从图1 可以看出,RDDmap 、filter 和union 算子操作时,属于窄依赖的类表现;而 RDDjoin 算子操作(对输入进行协同划分)时,属于窄依赖表现的第二类。这里的 输入协同划分指多个父RDD 的某一个分区的所有Key ,被划分到子RDD 的同一 分区,而不指同一个父RDD 的某一个分区,被划分到子RDD 的两个分区中。当 子RDD 算子操作,因为某个分区操作失败导致数据丢失时,只需要重新对父RDD 中对应的分区(与子RDD 相对应的分区)算子操作即可恢复数据。 宽依赖指子RDD 的每一个分区都会使用所有父RDD 的所有分区或多个分区,即 OneToManyDependecies 。为了便于理解,们通常把宽依赖形象的比喻为超生。当 RDDgroupByKey 和join 操作时,会产生宽依赖,如图2 所示。 1 图2WideDependencies 宽依赖 从图2 可以看出,父RDDgroupByKey 和join (输入未协同划分)算子操作时,子 RDD 的每一个分区都会依赖于所有父RDD 的所有分区。当子RDD 算子操作,因 为某个分区操作失败导致数据丢失时,则需要重新对父RDD 中的所有分区进行算 子操作才能恢复数据。 需要注意的,join 算子操作既可以属于窄依赖,也可以属于宽依赖。当join 算子操 作后,分区数量没有变化则为窄依赖(如joinwithinputsco -partitioned ,输入协同划 分);当join 算子操作后,分区数量发生变化则为宽依赖(如joinwithinputsnotco - partitioned ,输入非协同划分)。 Transformation ,懒执行,需要Action 触发执行 filter 过滤RDD[T]==RDD[T],窄依赖 map RDD[T] -RDD[O], 窄依赖 flatMap RDD[T]–RDD[[O]],一对多,窄依赖, mapToPair sample 抽样算子RDD[T]–RDD[O],窄依赖 sortBy RDD[T]–RDD[T], 根据你指定的内容排序宽依赖 sortByKey 根据你的K 排序,要求RDD 中必须是KV 的,宽依赖 2 reduceByKey 根据RDD 的K 分组之后聚合(累加,字符串连接) ,宽依赖 join 把两个RDD 根据K 相同合并,结果RDD[K,(V1,V2)] ,宽依赖 leftOuterJoin 左连接和下面的一致都是宽依赖 rightOuterJoin fullOuterJoin union 把两个RDD 直接聚合成一个RDD ,数据不合并,窄依赖 intersection 取两个RDD 的交集,窄依赖 subtract mapPartitions 把整个分区的数据作为一个迭代器一次计算数据量不是特别大会有性能提升,窄 依赖 distinct 去重算子本质是map + reduceByKey+map 宽依赖 cogroup (K,V) (K,W)=(K,([V],[W])) RDD1 相同的key value 放在[V]中另一个RDD 相同的 key 的value 放在[W]中宽依赖 mapPartitionsWithIndex 把整个分区的数据作为一个迭代器一次计算多了一个分区的index 数据量不是特别 大会有性能提升,窄依赖 repartition 可以增多分区,可以减少分区,有shu

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档