一、小表join大表
1)小表在左边(但是新版本已经没区别)
2)开启MapJoin
3)先过滤再join
二、大表join大表
1)空key过滤
2)空key处理
3)先过滤再join
三、group by
设置参数,使之运行两个MR Job。第一个MR Job中,Map的输出结果会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MR Job再根据预处理的数据结果按照Group By Key分布到Reduce中(这个过程可以保证相同的Group By Key被分布到同一个Reduce中),最后完成最终的聚合操作。
四、Count(Distinct) 去重统计
一般COUNT DISTINCT使用先GROUP BY再COUNT的方式替换
五、行列过滤
列处理:在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。
行处理:先过滤where条件,作为中间表,再进行join