bypass
运行机制的触发条件如下:
1)shuffle map task
数量小于
spark.shuffle.sort.bypassMergeThre
shold=200
参数的值。
2)
不是聚合类的
shuffle
算子
(
比如
reduceByKey)
。
同普通机制基本类同
,
区别在于
,
写入磁盘临时文件的时候不会在内
存中进行排序
而是直接写
,
最终合并为一个
task
一个最终文件
所以和普通模式
IDE
区别在于
:
第一,磁盘写机制不同;
第二,不会进行排序。也就是说,启用该机制的最大好处在于,
shuffle write
过程中,不需要进行数据的排序操作,也就节省掉了
这部分的性能开销。
1. SortShuffle对比HashShuffle可以减少很多的磁盘 文件,以节省网络IO的开销
2. SortShuffle主要是对磁盘文件进行合并来进行文件 数量的减少, 同时两类Shuffle都需要经过内存缓冲区 溢写磁盘的场景。所以可以得知, 尽管Spark是内存迭 代计算框架, 但是内存迭代主要在窄依赖中. 在宽依赖(Shuffle)中磁盘交互还是一个无可避免的情况. 所 以, 我们要尽量减少Shuffle的出现, 不要进行无意义的Shuffle计算。