关于hive优化的补充和重新描述

join优化

    1 小表在保证在map段join过滤大量数据

    2 自动开启map段join ,设置hive.mapjoin.smalltable.filesize大小,在这范围内为小表自动mapjoin

    3 自联结采用group by 替换join操作

Reducer数量 

    了解:hive.exec.reducers.bytes.per.reducer(默认是1GB)和hive.exec.reducer.max来决定reducer的数量

    reducer数量=min(参数2,总数据量/参数1)

列裁剪和分区裁剪

Group by优化

    1map端合并:

     参数 hive.map.aggr是否在map段进行聚合默认为true,减少中间文件的数量

     参数 hive.groupby.mapaggr.checkinterval在map段进行聚合操作的条目数目默认是10w条

    2防止数据倾斜

    hive.groupby.skewindata

合并小文件

    1使用参数

    hive.merge.mapfiles 是否合并map阶段输出的文件

    hive.merge.reducerfiles 是否合并reducer阶段输出的文件

    hive.merge.size.per.task 设置合并文件的大小默认

利用multi-group by和multi-insert有效减少表扫描次数

使用union all特定

union all 阶段不进行group by操作
select * from(
select * from a
union all
select * from b)

group by a,b,c

开启并行执行

     开启 hive.exec.parallel=true

全排序


        

你可能感兴趣的:(关于hive优化的补充和重新描述)