--设置使用spark引擎
set hive.execution.engine=spark;
set spark.master=yarn-cluster;
set spark.executor.cores=4
--设置shuffle的分区数
set spark.sql.shuffle.partitions = 1500 --设置shuffle的并行度
set spark.executor.memory=10g; --设置堆内内存
set spark.yarn.executor.memoryOverhead=2g; --设置堆外内存
set spark.driver.cores=2
map端:
设置map端聚合:set hive.map.aggr=true; 相当于map端执行combiner
启用map join自动转换:set hive.auto.convert.join=true;
设置环形缓冲区的大小:mapreduce.task.io.sort.mb 默认100M,可以调高
设置环形缓冲区的阈值:mapreduce.map.sort.spll.percent 默认80%,可以调高到90%
增加Merge合并的次数:mapreduce.task.io.sort.factor 默认10 可提高
增加MapTask内存大小:mapreduce.map.memory.mb 默认1G --> 处理128M的数据,设置1G
增加MapTask堆内存的大小:mapreduce.map.java.opts=-Xmx13106M --设置为13G
增加MapTask中的核数:mapreduce.map.cpu.vcores 默认MapTask的cpu核数为1
设置重试次数:mapreduce.map.maxattempts 默认重试次数为4
合并小文件:set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
reduce端:
set hive.exec.parallel=true 开启任务并行执行
set hive.exec.parallel.thread.number=16; //同一个sql允许最大并行度,默认为8
--对于分区表:分区表不使用分区过滤,除非where语句中含有分区字段过滤条件来限制范围,否则不允许执行
set hive.strict.checks.no.partition.filter=true;
--使用了order by语句的查询,要求必须使用limit语句。
hive.strict.checks.orderby.no.limit=true
select * from t ;
hive-sql执行时参数调优:
最新推荐文章于 2024-08-29 18:49:20 发布