- 两个表连接时:小表放在join左边,因为左边在reduce阶段会加载进内存;强制使用mapjoin
- 通过参数设置map端进行聚合 hive.map.aggr = true
- 数据倾斜的聚合优化 hive.groupby.skewindata = true
- 使用sort by部分排序 替换order by 全局排序
- 尽量只查询需要使用的列,将分区、过滤条件前置,
- 空值处理过滤或者赋予随机值避免数据倾斜,聚合操作外置
- 慎用count(distinct)
- 使用with as 消灭子查询
- 设置小文件合并:hive.merge.mapfiles = true
- 设置最大切分文件数和任务数:hive.mapred.max.split.size=1000 hive.mapred.reduce.tasks=100