在Spark1.3中引入了SortShuffle。
- 流程: 一个task会先写往一个5M的内存缓冲区
- 会有一个估算机制,假如下次写入需要5.2的内存,那么他会申请 2*估算-当前+当前 也就是这块内存会变为10.4 当mapTask申请不到内存的时候,就会易写磁盘
- 在易写之前内存结构中的数据会进行排序分区,写入一个内存缓冲,一个batch一写,默认是1万条,形成一个小文件
- 在进行了多次易写之后,会形成多个小文件, 最后进行一次归并排序,会形成一个文件,以及一个索引文件
为什么要有索引呢,可以快速定位到一个分区的文件在文件中的位置