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过程一定会经过合并排序、分组
相关推荐
tianyuanwo1 分钟前
Python 属性查找陷阱:从 `AttributeError: ‘X‘ object has no attribute ‘_children‘` 说起
python
yichengerp2 分钟前
国内中小电子工厂用哪个erp系统好?
大数据·运维·人工智能·云计算·制造
喜欢打篮球的普通人7 分钟前
MiniMind 学习笔记(二十二):数学 Cookbook——把概率空间、期望、似然一次讲明白
人工智能·笔记·学习
程序猿阿森8 分钟前
混合精度详解:FP16 vs BF16,Loss Scaling 与 PyTorch 实战
人工智能·pytorch·python
benchmark_cc10 分钟前
A股、港股、美股日K如何拼接?处理不同交易日造成的时间轴错位
大数据·python·pandas·量化交易·股票数据·quantdash
恒拓高科WorkPlus13 分钟前
企业文档协作平台和企业IM平台有什么区别?如何配合使用?
大数据
龙腾-虎跃20 分钟前
AI-Vue3-python-flask-Blog 全栈博客项目深度解析:从零搭建你的 AI 博客
人工智能·python·flask
余槐i21 分钟前
无慢查询 RT 却飙升:cProfile 定位 FastAPI 事件循环阻塞
后端·python·性能优化·fastapi·asyncio
Xiu Yan32 分钟前
Python 数据分析:数据分析步骤
开发语言·python·数据分析
vilya32 分钟前
把 Python 塞进 APK:Chaquopy 打包实践
android·python