• RDD的依赖关系


    RDD依赖关系

    1. RDD血缘关系

    RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,他可以根据这些信息来重新运算和恢复丢失的数据分区。

    2. RDD依赖关系

    这里所谓的依赖关系,其实就是两个相邻RDD之间的关系

    3. RDD窄依赖

    窄依赖表示每一个父RDD的Partition最多被子RDD的一个Partition使用,窄依赖我们形象的比喻为独生子女。

    4. RDD宽依赖

    宽依赖表示同一个父RDD的Partition被多个子RDD的Partititon依赖,会引起Shuffle。宽依赖形象的比喻为多生。

    5. RDD阶段划分

    DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环。

    6. RDD任务的划分

    RDD任务切分中间分为:Application、Job、Stage和Task

    • Application:初始化一个SparkContext即生成一个Application
    • Job:一个Action算子生成一个Job
    • Stage:以宽依赖(ShuffleDependency)为界,个数等于宽依赖的个数加1
    • Task:一个Stage阶段中,最后一个RDD的分区数就是Task的个数
      注意:Application->Job->Stage->Task 每一层都是1对n的关系。
  • 相关阅读:
    cJSON:一个轻量级C语言JSON解析器
    【Day14】类和对象
    RT-Thread信号量和互斥量
    理解DDD设计
    2023 羊城杯 final
    散列表(1)-集合/用位向量实现集合
    何时使用Elasticsearch而不是MySql
    Android MVI架构的深入解析与对比
    【Java八股文总结】之Redis数据库
    Kafka消费者不消费数据
  • 原文地址:https://blog.csdn.net/Laoddaaa/article/details/126428903