1、性能工具
2、设计优化
3、数据格式
4、作业和查询
冲哥:
1、用union all(不排序不去重) 不用union(去重和排序,依次按每列排序)
注:以上hive on mr满足,但是在hive on spark上union(去重但是不排序)
2、去重使用group by不用distinct,两个job弱化数据倾斜,第一次随机分区,多个reduce,缓解倾斜
set hive.groupby.skewindata=true
3、用grouping sets,with rollup,with cube,不用union
4、不用order by,用row_number
5、用分区表避免全表扫描
6、使用parquet格式
7、where卸载最里层,减少外层数据量
8、查数据时要限定时间范围减少数据量
9、活用中间表
10、连表查询要有关联条件,防止笛卡尔积
11、尽量用app层数据,粗粒度层表,数据讲过聚合,直接用,避免倾斜
其他:
1、设计分区表
2、数据文件优化
parquet
中间文件压缩
set hive.exec.compress.intermediate=true
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
输出文件压缩
set hive.exec.compress.output=true
set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec
存储
使用容器文件存储