Hive使用注意点
(1)尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表加上分区判断过滤不需要处理的数据。(2)分区表关联在on条件上加上分区判断,否则会扫全表。
(3)避免一个SQL包含复杂逻辑,可以借助中间表来完成复杂的逻辑。
(4)建议使用外部表,防止误删表时删除数据;对于中间表可使用内部表的方式。
splitsize大小--切片大小( mapred.max.split.size 和mapred.min.split.size )
-->调大map个数(128MB~512MB/Task)
调小mapred.max.split.size
-->调小map个数
调大mapred.max.split.size
-->在未指定reduce个数的情况下,计算公式如下:
reducers = Math.min(maxReducers, totalInputFileSize/bytesPerReducer)
maxReducers由参数hive.exec.reducers.max设置,默认999
bytesPerReducer由参数hive.exec.reducers.bytes.per.reducer 设置,默认1G
调整reduce个数(建议值 512MB~1GB/Task)通过mapred.reduce.tasks或mapreduce.job.reduces设置
小文件合并——输入合并(输入大量小文件)
set hive.input.format = org.apache.hadoop.hive.ql.io.combinehiveinputformat;set mapred.max.split.size = 536870912; //512MB
set mapred.min.split.size = 134217728; //128MB