一.数据去重排序 1.1.去重 distinct与group by 尽量避免使用distinct进行排重,特别是大表操作,用group by代替 -- 不建议 select DISTINCT key from a -- 建议 select key from a group by key 1.2.排序优化 只有order by产生的结果是全局有序的,可以根据实际场景进行选择排序. 1.order by 实现全局排序,一个reduce实现,由于不能并发执行,所以效率偏低 2.sort by实现部分有
一.what is a shuffle? 1.1 shuffle简介 一个stage执行完后,下一个stage开始执行的每个task会从上一个stage执行的task所在的节点,通过网络传输获取task需要处理的所有key,然后每个task对相同的key进行算子操作,这个过程就是shuffle过程. 我们常说的shuffle过程之所以慢是因为有大量的磁盘IO以及网络传输操作.spark中负责shuffle的组件主要是ShuffleManager,在spark1.1之前采用的都是HashShuff