Hive、Spark SQL任务参数调优回顾

17 篇文章 0 订阅

1.下列Hive参数对Spark同样起作用。

set hive.exec.dynamic.partition=true                     : 是否允许动态生成分区
set hive.exec.dynamic.partition.mode=nonstrict     :是否容忍指定分区全部动态生成
 set hive.exec.max.dynamic.partitions = 100;        :动态生成的最多分区数
 2.运行行为set spark.sql.autoBroadcastJoinThreshold; 
 // 大表 JOIN 小表,小表做广播的阈值
 set spark.dynamicAllocation.enabled; 
 // 开启动态资源分配
 set spark.dynamicAllocation.maxExecutors; 
 //开启动态资源分配后,最多可分配的Executor数
 set spark.dynamicAllocation.minExecutors;
 //开启动态资源分配后,最少可分配的Executor数
 set spark.sql.shuffle.partitions; 
 // 需要shuffle是mapper端写出的partition个数
 set spark.sql.adaptive.enabled; 
 // 是否开启调整partition功能,如果开启,spark.sql.shuffle.partitions设置的partition可能会被合并到一个reducer里运行
 set spark.sql.adaptive.shuffle.targetPostShuffleInputSize; 
 //开启spark.sql.adaptive.enabled后,两个partition的和低于该阈值会合并到一个reducerset spark.sql.adaptive.minNumPostShufflePartitions; 
 // 开启spark.sql.adaptive.enabled后,最小的分区数
 set spark.hadoop.mapreduce.input.fileinputformat.split.maxsize; 
 //当几个stripe的大小大于该值时,会合并到一个task中处理
 3.executor能力set spark.executor.memory; 
 // executor用于缓存数据、代码执行的堆内存以及JVM运行时需要的内存
 set spark.yarn.executor.memoryOverhead; 
 //Spark运行还需要一些堆外内存,直接向系统申请,如数据传输时的netty等。
 set spark.sql.windowExec.buffer.spill.threshold; 
 //当用户的SQL中包含窗口函数时,并不会把一个窗口中的所有数据全部读进内存,而是维护一个缓存池,当池中的数据条数大于该参数表示的阈值时,spark将数据写到磁盘
 set spark.executor.cores; 
 //单个executor上可以同时运行的task数

4.GC优化

参考todo
https://www.jianshu.com/p/2964bf816efc

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值