`

spark-学习笔记--29 shuffle2

 
阅读更多

shuffle2

 

spark shuffle 演进的历史:

 

Spark 0.8及以前 Hash Based Shuffle

Spark 0.8.1 为Hash Based Shuffle引入File Consolidation 机制

Spark 0.9 引入ExternalAppendOnlyMap

Spark 1.1 引入Sort Based Shuffle,但默认仍为Hash Based Shuffle

Spark 1.2 默认的Shuffle方式改为Sort Based Shuffle

Spark 1.4 引入Tungsten-Sort Based Shuffle

Spark 1.6 Tungsten-sort并入Sort Based Shuffle

Spark 2.0 Hash Based Shuffle退出历史舞台

 

 

File Consolidation   同一个节点:

并行执行的 shuffleMapTask  写不同的文件

并行执行后再运行的shuffleMapTask  复用文件  写到不同的 segment

 

 

 

 

 

org.apache.spark.shuffle.hash.HashShuffleWriter 

 

    判断是否需要本地聚合

若需要 则执行本地聚合 : (hello,1)、(hello,1)  会聚合成  (hello,2)

    

 

    使用partitioner 进行分区  默认使用 hashPartitioner  

生成 bucketId

相同 bucketId 的数据写入到一个bucket

 

 

  /** Write a bunch of records to this task's output */

  override def write(records: Iterator[Product2[K, V]]): Unit = {

    val iter = if (dep.aggregator.isDefined) {

      if (dep.mapSideCombine) {

        dep.aggregator.get.combineValuesByKey(records, context)

      } else {

        records

      }

    } else {

      require(!dep.mapSideCombine, "Map-side combine without Aggregator specified!")

      records

    }

 

    for (elem <- iter) {

      val bucketId = dep.partitioner.getPartition(elem._1)

      shuffle.writers(bucketId).write(elem._1, elem._2)

    }

 

  }

 

分享到:
评论

相关推荐

    Spark-Core学习知识笔记整理

    Spark-Core文档是本人经三年总结笔记汇总而来,对于自我学习Spark核心基础知识非常方便,资料中例举完善,内容丰富。具体目录如下: 目录 第一章 Spark简介与计算模型 3 1 What is Spark 3 2 Spark简介 3 3 Spark...

    spark笔记整理文档

    本篇笔记将深入探讨Spark的核心概念、架构设计以及实际应用,旨在帮助读者全面理解并掌握Spark。 1. Spark概述: Spark最初由加州大学伯克利分校AMPLab开发,其设计理念是提供一个快速、通用且可扩展的大数据处理...

    Spark学习笔记一

    Generality(通用性)意味着Spark不仅仅是一个计算框架,它还支持SQL查询、流处理、机器学习和图计算等多种任务。Spark SQL结合了DataFrame,提供了一种更接近SQL的方式来处理数据。MLlib是Spark的机器学习库,包含...

    spark-source-code-learn-note:火花学习笔记-spark source code

    《Spark源码学习笔记》是针对大数据处理框架Spark进行深入研究的资料,主要涵盖了Spark的核心设计理念、架构原理以及源码解析。本笔记旨在帮助读者理解Spark如何高效地处理大规模数据,提升数据分析和处理的能力。 ...

    spark笔记.zip

    2. RDD概念与操作:RDD是Spark的基础数据结构,不可变且分区。基本操作包括创建、转换和动作。转换如map、filter、join等,动作如count、saveAsTextFile等。RDD的弹性体现在容错机制,可以通过检查点或宽依赖关系...

    spark源码阅读笔记

    Spark是Apache软件基金会下的一个开源大数据处理框架,以其高效的计算模型和易用性而闻名。...通过对Spark源码的深入学习,开发者可以更好地掌握大数据处理的底层机制,提升在大规模数据环境中的编程能力。

    Spark—Python学习笔记.zip

    本学习笔记将深入探讨如何利用PySpark进行数据处理和分析,帮助你掌握这一核心技术。 首先,PySpark是Apache Spark与Python的结合,允许开发者用Python编写Spark应用程序。它提供了丰富的数据处理接口,包括RDD...

    spark全套学习资料.zip

    《Spark学习全套技术》 Spark,作为大数据处理领域的重要框架,因其高效、易用和弹性扩展的特性,深受开发者喜爱。本套学习资料全面涵盖了Spark的核心技术和应用实践,旨在帮助学习者深入理解Spark并掌握其在大数据...

    spark资料笔记代码

    尚硅谷的Spark资料笔记代码提供了一个深入学习和理解Spark的宝贵资源库,涵盖理论知识、实践案例以及代码示例。 一、Spark核心概念 Spark的核心在于其弹性分布式数据集(Resilient Distributed Datasets,简称RDD)...

    spark大数据商业实战三部曲源码及资料.zip

    《Spark大数据商业实战三部曲》...总的来说,《Spark大数据商业实战三部曲》的源码和资料集合,为学习和掌握Spark提供了丰富的实践素材,无论是初学者还是有经验的开发者,都能从中受益,提升大数据处理和分析的能力。

    sparknote:spark学习笔记

    Sparknote是针对Spark的学习笔记,通常会涵盖Spark的基本概念、核心组件以及实际应用案例。在Sparknote-master这个压缩包中,很可能是包含了一系列关于Spark的教程文档或者代码示例。 一、Spark概述 Spark最初由...

    spark-2.1.1:spark原始物走读注解解

    《Spark 2.1.1:深度解析与源码阅读笔记》 Spark作为一个开源的分布式计算框架,以其高效、易用和灵活性深受大数据处理领域的欢迎。Spark 2.1.1是其发展中的一个重要版本,它在性能优化、功能增强以及稳定性上都有...

    spark_code_basic

    "spark_learn_bf_basic.docx"可能是基础学习笔记或教程,内容可能涵盖上述理论知识的详细解释和示例代码。"spark_learn_bf_littleProject.docx"则可能包含实际的小项目,如日志分析、Word Count等,通过实践加深对...

    Spark学习笔记—Spark工作机制

    一.Spark执行机制 1.执行机制总览 Spark应用提交后经历一系列转变,最后成为...2.Spark应用的概念 Spark应用(application)是用户提交的应用程序,执行模式有Local,Standalone,YARN,Mesos。根据Application的Driver

    图解Spark核心技术与案例实战

    2. **Resilient Distributed Datasets (RDD)**:RDD是Spark的基本数据抽象,它是不可变的、分区的数据集。RDD支持转换和动作操作,转换操作创建新的RDD,动作操作触发计算并返回结果。 3. **DataFrame和Dataset**:...

    spark笔记整理,2022年3月16日

    本笔记整理主要涵盖了2022年3月16日的学习内容,旨在深入理解和掌握Spark的核心概念和功能。 Spark的核心理念是内存计算,它通过将数据存储在内存中,从而减少了磁盘I/O,提高了数据处理速度。这一特性使得Spark比...

    Mastering-Spark

    4. **MLlib 升级**:机器学习库 MLlib 在 Spark 2.0 中得到了重大更新,增加了新的算法并优化了现有算法的性能。 5. **Spark Connect**:这是一个新的 API,旨在提供一个统一的接口来访问 Spark 的所有组件,从而...

    9 Spark.zip111111111

    这个名为"9 Spark.zip111111111"的压缩包可能包含了关于Spark的详细学习资源,包括笔记、晨测、资料和技术图解等。 笔记部分可能涵盖了Spark的基础概念,例如RDD(弹性分布式数据集)、DataFrame和DataSet,这些都...

    基于hadoop-2.6.0-cdh5.4.3版本的源码阅读,以注释及博客的形式记录阅读笔记.zip

    《Hadoop 2.6.0-cdh5.4.3 源码解析与学习笔记》 在当今大数据处理领域,Hadoop 是一个至关重要的开源框架,它为大规模数据处理提供了分布式计算的能力。本资料主要针对 Hadoop 2.6.0-cdh5.4.3 版本进行源码阅读,...

Global site tag (gtag.js) - Google Analytics