shuffle——spark

什么是shuffle

shuffle过程本质上是磁盘读写的过程

Spark Shuffle过程也叫作宽依赖过程

Spark中哪些算子会产生Shuffle?

连接类 :join fullOuterJoin leftOuterjoin rightOuterJoin
分区类:repartition coalesce(根据情况)
排序类:sortBy sortByKey
汇总类:reduceBykey groupBykey
去重类:distinct
flatmap

spark中的shuffle

1)Hash Based Shuffle

复制代码

特点:没有排序,只分区,每个Task按照ReduceTask个数生成多个文件【M * R】 优点:简单,数据量比较小,性能就比较高 缺点:小文件非常多,数据量比较大性能非常差

2) Hash Based Shuffle 【优化后的,File Consolidation机制】

两个Executor ,4个ReduceTask,那就是 2 * 4 = 8 进步在哪里?进度在于如果是以前 4 个 map 4 个 reduce 形成 16 个文件,现在引入 executor 以后,生成 8 个文件。 生成的文件数量 =Executor的数量*reduce任务的数量 原来:生成的文件数量 =map任务的数量*reduce任务的数量

3) Sort Based Shuffle [目前最新的]

Shuffle Write

第一种:SortShuffleWriter:普通Sort Shuffle Write机制

与MR的Map端Shuffle基本一致
生成一个整体基于分区和分区内部有序的文件和一个索引文件
特点:有排序,先生成多个有序小文件,再生成整体有序大文件,每个Task生成2个文件,数据文件和索引文件

第二种:BypassMergeSortShuffleWriter

类似于优化后的Hash Based Shuffle
先为每个分区生成一个文件,最后合并为一个大文件,分区内部不排序
跟第一个相比,处理的数据量小,处理的分区数小于200 ,不在内存中排序。
场景:数据量小

第三种:UnsafeShuffleWriter

Partition个数不能超过2^24-1个(大于200用这个)
场景:数据量大
Shuffle Read
类似于MapReduce中的Reduce端shuffle

MR:Reduce端的shuffle过程一定会经过合并排序、分组
相关推荐
hunter20620613 分钟前
用opencv生成视频流,然后用rtsp进行拉流显示
人工智能·python·opencv
飞的肖1 小时前
日志(elk stack)基础语法学习,零基础学习
学习·elk
Johaden2 小时前
EXCEL+Python搞定数据处理(第一部分:Python入门-第2章:开发环境)
开发语言·vscode·python·conda·excel
小虎牙^O^3 小时前
2024春秋杯密码题第一、二天WP
python·密码学
dal118网工任子仪3 小时前
66,【6】buuctf web [HarekazeCTF2019]Avatar Uploader 1
笔记·学习
02苏_3 小时前
2025/1/21 学习Vue的第四天
学习
羊小猪~~4 小时前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研
约定Da于配置4 小时前
uniapp封装websocket
前端·javascript·vue.js·websocket·网络协议·学习·uni-app
梦魇梦狸º4 小时前
mac 配置 python 环境变量
chrome·python·macos
查理零世4 小时前
算法竞赛之差分进阶——等差数列差分 python
python·算法·差分