磁盘上存有若干个溢出的临时文件,而内存的 Map 结构中留有部分数据,Spark 使用归并排序算法对所有临时文件和 Map 结构剩余数据做合并,分别生成 data 文件、和与之对应的 index 文件
来自:06 | Shuffle管理:为什么Shuffle是性能瓶颈?
6 人划过
我们知道,Shuffle 在 Map 阶段往往会对数据做排序,而这恰恰正中 SMJ 机制的下怀。
来自:18 | 数据关联优化:都有哪些Join策略,开发者该如何取舍?
5 人划过
reduceByKey 在落盘与分发之前,会先在 Shuffle 的 Map 阶段做初步的聚合计算
来自:07 | RDD常用算子(二):Spark如何实现数据聚合?
4 人划过
且创建完成后,还要在全网范围内跨节点、跨进程地分发到其他 Executors
来自:03 | RDD常用算子(一):RDD内部的数据转换
4 人划过
coalesce 则不然,在降低并行度的计算中,它采取的思路是把同一个 Executor 内的不同数据分区进行合并,如此一来,数据并不需要跨 Executors、跨节点进行分发,因而自然不会引入 Shuffle。
来自:09 | RDD常用算子(三):数据的准备、重分布与持久化
4 人划过
广播变量由 Driver 端定义并初始化,各个 Executors 以只读(Read only)的方式访问广播变量携带的数据内容。累加器也是由 Driver 定义的,但 Driver 并不会向累加器中写入任何数据内容,累加器的内容更新,完全是由各个 Executors 以只写(Write only)的方式来完成,而 Driver 仅以只读的方式对更新后的内容进行访问。
来自:10 | 广播变量 & 累加器:共享变量是用来做什么的?
4 人划过
其中,波浪线的含义,是其左侧与右侧的表达式在同一量级。左侧的表达式 D/P 为数据分片大小,右侧的 m/c 为每个 Task 分到的可用内存
来自:12 | 基础配置详解:哪些参数会影响应用程序稳定性?
3 人划过
数据块的概念与 RDD 数据分区(Partitions)是一致的
来自:11 | 存储系统:数据到底都存哪儿了?
3 人划过
因此,SMJ 算法的计算复杂度为 O(M + N)。
来自:17 | 数据关联:不同的关联形式与实现机制该怎么选?
3 人划过
RDD 的开发框架下,聚合类操作,如计数、求和、求均值,需要依赖键值对(Key Value Pair)类型的数据元素,也就是(Key,Value)形式的“数组”元素。
来自:01|Spark:从“大数据的Hello World”开始
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
编辑推荐
讲师的其他课程
包含这门课的学习路径
机器学习工程师
13门课程 37.6w人学习
看过的人还看了