Spark Shuffle
Shuffle
简介
Shuffle
(数据混洗)是将一组无规则的数据转换为一组有规则的数据。Spark
是一个分布式计算引擎,大多数的计算和数据转换过程是在多台计算机上执行的,当我们对RDD
进行规约操作时,例如reduceByKey
,或者当两个RDD
之间是宽依赖的关系时,都会产生Shuffle
。
Shuffle
实现方案
Shuffle
过程中会导致RDD
进行重分区,在数据量情况较大情况下也会将数据序列到磁盘上,所以整个Shuffle
过程会有大量的网络通信和磁盘IO
,Shuffle
的效率高低成为了Spark
计算效率高低的关键。
Hash Shuffle
-
在
Spark1.6
之前使用的Hash Shuffle
-
Hash Shuffle
原理图
- 过程解析
每一个MapTask
会将数据按照key