Spark中的宽窄依赖-宽窄巷子

在Spark中,宽窄依赖(Narrow and Wide Dependencies)是理解分布式计算和数据流动的关键概念,其特性与"宽窄巷子"的比喻有相似之处:

1、什么是依赖关系?

2、什么是宽窄依赖?

窄依赖:Narrow Dependencies

定义:父RDD的一个分区的数据只给了子RDD的一个分区 【 不用经过Shuffle 】

窄依赖(Narrow Dependency)

  • 定义 :子RDD的每个分区仅依赖于父RDD的一个分区 (如map、filter操作)。
  • 特点 :
    • 数据无需跨节点移动(本地计算)

    • 高效且容错简单(只需重算单个分区)

    • 类似窄巷子:数据流单向、并行,无交叉

      窄依赖示例:map操作

      rdd = sc.parallelize([1, 2, 3])
      mapped = rdd.map(lambda x: x * 2) # 子分区仅依赖父RDD的同一分区

宽依赖(Wide Dependency)

  • 定义 :子RDD的每个分区依赖父RDD的多个分区 (如groupByKey、reduceByKey)。
  • 特点 :
    • 需Shuffle操作(数据跨节点重组)

    • 可能成为性能瓶颈(网络传输开销)

    • 类似宽巷子:多路数据汇聚交叉,需全局协调

      宽依赖示例:reduceByKey

      rdd = sc.parallelize([("a", 1), ("b", 2), ("a", 3)])
      reduced = rdd.reduceByKey(lambda x, y: x + y) # 相同键的数据需从多分区聚合

性能优化建议

  1. 优先使用窄操作 :如用reduceByKey替代groupByKey(前者局部聚合减少Shuffle数据量)
  2. 调整分区数 :通过repartition()或coalesce()控制Shuffle粒度
  3. 持久化中间结果 :对重复使用的宽依赖RDD调用persist()

数学表达补充

设RDD分区为集合P,依赖关系可形式化定义为: \\text{窄依赖:} \\quad \\forall p_i \\in P_{\\text{子}}, \\ \\exists! p_j \\in P_{\\text{父}} \\quad \\text{s.t.} \\quad p_i \\subseteq f(p_j) \\text{宽依赖:} \\quad \\exists p_i \\in P_{\\text{子}}, \\ \\ \|{p_j \\in P_{\\text{父}} \\mid p_i \\cap p_j \\neq \\emptyset}\| \> 1 其中f为转换函数。

相关推荐
龙亘川1 分钟前
数智赋能物业不动产治理:亘川智城智慧物业系统实践解析
大数据·人工智能·智慧城市·开源软件·数据可视化
大大大大晴天️9 分钟前
元数据目录到数据资产运营:让好数据被看见、被复用、被持续经营
大数据·数据治理
Elastic 中国社区官方博客1 小时前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索
计算机毕业设计杰瑞1 小时前
【2027最新精品大数据】基于大数据的全国各地景点指数数据可视化分析,附源码_高质量项目_可视化_数据分析_毕设选题推荐_SPark_Hadoop_毕设指导
大数据·信息可视化·数据分析
计算机毕业设计杰瑞1 小时前
【2027精品大数据项目】基于大数据的全球太空探索数据分析与可视化,附源码_数据可视化_数据分析_毕设选题_SPark_Hadoop_文档指导ppt
大数据·信息可视化·数据挖掘·课程设计
计算机毕业编程指导师2 小时前
【计算机毕设推荐】基于Hadoop+Django的LLM多维度性能评估分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·django·毕业设计·课程设计·llm性能
AC赳赳老秦2 小时前
OpenClaw 与 FineBI 联动方案:公开数据自动采集与实时业务分析看板实践
大数据·开发语言·python·php·finebi·deepseek·openclaw
计算机毕业设计杰瑞2 小时前
【2027最新原创大数据】基于大数据的无人机自主导航数据分析与可视化,附源码_数据可视化_数据分析_数据挖掘_Hadoop_spark_文档指导_毕设指导
大数据·信息可视化·数据挖掘·课程设计
卷毛迷你猪2 小时前
快速实验篇(B12)异常流量与刷单识别(方法论演示)
大数据·hive·hadoop·数据挖掘·聚类
龙亘川2 小时前
探索智慧文化服务:建设初衷、整体架构、技术支撑、发展现状与实践影响
大数据·数据库·架构