ShuffleWriter
上面是使用哪种 writer 的判断依据, 是否开启 mapSideCombine 这个判断,是因为有些算子会在 map 端先进行一次
combine, 减少传输数据。 因为 BypassMergeSortShuffleWriter
会临时输出Reducer个(分区数目)小文件,所以分区数必须要小于一个阀值,默认是小于200。UnsafeShuffleWriter需要Serializer支持relocation,Serializer支持relocation:原始数据首先被序列化处理,并且再也不需要反序列,在其对应的元数据被排序后,需要Serializer支持relocation,在指定位置读取对应数据。
代码解读:https://www.jianshu.com/p/e8299e663d36?from=timeline&isappinstalled=0