Spark大会上,所有的演讲嘉宾都认为shuffle是最影响性能的地方,但是又无可奈何。之前去百度面试hadoop的时候,也被问到了这个问题,直接回答了不知道。这篇文章主要是沿着下面几个问题来开展:shuffle过程的划分?shuffle的中间结果如何存储?shuffle的数据如何拉取过来?Spark的操作模型是基于RDD的,当调用RDD的reduceByKey、groupByKey等类似的操作的时候,就需要有shuffle了。再拿出reduceByKey这个来讲。reduceByKey的时候,我们可以手动设定reduce的个数,如果不指定的话,就可能不受控制了。1、如果自定义了分区函数par