一 :参数调优
1.map和reduce的container的 cpu数和内存数调大
2.slowStart参数,这个参数就是设置map任务完成多少后,才启动reduce的参数
3.合并小文件的参数
二:sql调优
1.避免使用select * 因为会导致map端输出数据的时候,量比较大,本质就是列裁剪
2.有分区表的时候,一定是先过滤分区数据,本质就是分区裁剪
3.谓词下推: 就是先使用where 对过滤条件中的数据进行过滤
4.Count(distinct) 会出现一个reducer的情况,所以基本上都是使用group by 进行代替
5.全局排序,取前N名时,必须使用order by。但是order by会导致出现一个reducer的情况,所以可以先使用 distribute by ... sort By ...limit 先进行分区内部取前N名 最后套一层再用 order by,那么这个reducer 处理的数据量就小了很多
6.碰到那种可预见性的两张大表关联,可以给对这两张表创建分桶表
7.做hive 的join时,在业务允许的情况下,一定要提前去重,否则会出现数据膨胀的情况(笛卡尔积)