Spark SQL调优实战

1、新添参数说明

// Driver和Executor内存和CPU资源相关配置

--是否开启executor动态分配开启时spark.executor.instances不生效

spark.dynamicAllocation.enabled=false

--配置Driver内存

spark.dirver.memory=5g

--driver最大结果大小,设置为0代表不限制,driver在拉取结果时,如果结果超过阈值会报异常

spark.driver.maxResultSize=0

--配置executor内存和cpu

spark.executor.memory=5g

spark.executor.cores=8

--executor额外内存,executor内存包括三个部分,heap、off-heap以及overhead,heap和off-heap用于存储executor上任务的执行结果块以及用作执行内存,overhead作为额外内存用于存储虚拟机的开销

spark.yarn.executor.memoryOverhead=6120

--配置executor实例个数,此种方式是固定资源分配方式

spark.executor.instances=25

--是否开启executor堆外内存,以及堆外内存的的大小

spark.memory.offHeap.enabled=true

spark.memory.offHeap.size=2048mb

--spark内存既可以用于存储也可以用于计算,计算内存和存储内存是软边界,这个参数用于设置存储内存的比例

spark.memory.fraction=0.4

// 序列化器相关配置,spark默认采用java序列化器,也提供kryoserializer的实现后者的性能是前者的十倍

spark.kryoserializer.buffer.max=2047mb

spark.kryoserializer.buffer=16384kb

//中间结果网络传输压缩,缓解内存和网络传输压力

spark.shuffle.compress=true

spark.rdd.compress=true

//开启spark任务推断,优化分区任务执行时间不均衡问题,避免严重拖后腿任务

spark.speculation=true

spark.speculation.interval=60s

spark.speculation.multiplier=1.3

spark.speculation.quantile=0.99

//网络通信超时和失败重试相关参数,避免网络质量差或不稳定导致的任务失败

spark.network.timeout=300

spark.shuffle.io.maxRetries=30

spark.shuffle.io.retryWait=10s

//spark对分区结果的大小做了2G的限制,超出了就会报too large dataframe异常,这时需要增加shuffle分区,缓解数据倾斜,但是如果数据本身是倾斜了,下面参数治标不治本,默认300

spark.sql.shuffle.partitions=500

//设置自动广播阈值,在大表join小表时可以将小表作为广播变量,存在内存中,提升join的性能

spark.sql.autoBroadcastJoinThreshold=-1

  1. 参数影响
  • 什么时候需要将spark.dynamicAllocation.enable设置为false?

回答:spark默认按照128m来对文件进行分区如果文件比较大比如40G分区多达300多个采用动态分配策略可能导致占用太多的集群资源使得集群崩溃,如下对比图。

1: 采用动态分配策略executor实例数高达115(116另Driver)

2:采用静态分配策略executor实例数固定为25

  • spark.memory.offHeap.enabled和spark.memory.offHeap.size的影响

回答在运行百万级别job_trsf_dim_chl_cust_spark_df任务时使用默认配置参数报直接内存不足异常导致作业运行失败如下图

3: 堆外内存不足导致任务运行失败

添加以上参数后作业运行成功

  • spark.kryoserializer.buffer大小的调整

回答当使用kryoserializer序列化器时遇到Buffer大小不足提示require ** but available等信息需要调大上述参数

第四、调大spark.sql.shuffle.partitions的目的?

4: 分区结果超过2G错误

回答当出现如上图所示错误很大程度是因为数据发生了倾斜这时可以调整shuffle的分区均衡分区中的数据但如果数据本身是倾斜只能自定义分区规则重写Spark Partitioner或进行SQL调优

  • 为什么要避免对大表进行select * 操作

回答因为Spark是以Client方式向Yarn提交作业查询的结果会返回给Driver端对一个40G的表进行全量查询会导致Driver端崩溃导致如下图所示的错误

5: Jave堆内存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/371957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python中的web框架介绍

目录 一:框架介绍 二:框架安装 Python中有许多流行的Web框架,以下是一些最受欢迎的框架: 一:框架介绍 1: Django Django是一个高级Python Web框架,它鼓励快速开发和干净的设计。Django的主要特点是其强大的ORM&am…

【C++历练之路】二叉搜索树的学习应用及其实现

W...Y的主页 😊 代码仓库分享💕 前言🍔: 我们之前学过一些查找关键数据的办法,排序二分查找。但是这种方法的插入的时间复杂的太高,今天我们来学习一个更好的办法来应对数据查找——二叉搜索树。 目录…

【图论】基环树

基环树其实并不是树,是指有n个点n条边的图,我们知道n个点n-1条边的连通图是树,再加一条边就会形成一个环,所以基环树中一定有一个环,长下面这样: 由基环树可以引申出基环内向树和基环外向树 基环内向树如…

ADC详解

一、ADC 简介 ADC 即模拟数字转换器,英文详称 Analog-to-digital converter,可以将外部的模拟信号转换为数字信号。 STM32F4xx 系列芯片拥有 3 个 ADC,这些 ADC 可以独立使用,其中 ADC1 和 ADC2 还可以组成双重模式&…

HarmonyOS ArkTS修改App的默认加载的界面(二十)

前言&#xff1a;在Android开发中想要修改默认启动页&#xff0c;只需要在AndroidManifest.xml中设置即可 只需要在启动的activity种添加如下属性即可 <intent-filter><action android:name"android.intent.action.MAIN" /><category android:name&qu…

相同的树[简单]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你两棵二叉树的根节点p和q&#xff0c;编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,…

Debezium发布历史109

原文地址&#xff1a; https://debezium.io/blog/2021/09/16/debezium-1-7-cr1-released/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Debezium 1.7.0.CR1 Released September 16, 2021 by Gunnar Morling r…

【AIGC核心技术剖析】DreamCraft3D一种层次化的3D内容生成方法

DreamCraft3D是一种用于生成高保真、连贯3D对象的层次化3D内容生成方法。它利用2D参考图像引导几何塑造和纹理增强阶段&#xff0c;通过视角相关扩散模型执行得分蒸馏采样&#xff0c;解决了现有方法中存在的一致性问题。使用Bootstrapped Score Distillation来提高纹理&#x…

喜报!麒麟信安操作系统通过GB18030-2022国家标准

《信息技术 中文编码字符集》强制性国家标准GB 18030-2022将于2023年8月1日起全面实施。麒麟信安积极推动电子信息产业标准化工作&#xff0c;快速完成标准适配&#xff0c;近日&#xff0c;麒麟信安服务器操作系统V3、麒麟信安桌面操作系统V3顺利通过GB18030-2022《信息技术 中…

通过dockerfile 生成自定义nginx镜像

通过dockerfile生成自定义nginx镜像 &#xff01;&#xff01;&#xff01;docker 必须在linux环境下才能进行如果你是window则需要装虚拟机 新建一个文件名字为Dockerfile&#xff0c;无需后缀 文件完整名就是Dockerfile 编写dockerfile FROM nginx RUN echo hello nginx!…

基于ADAU1777 DSP有源降噪(主动降噪)耳机设计

加我微信hezkz17可以申请加入数字音频系统研究开发交流答疑群&#xff0c;加群附加赠送DSP音频项目核心开发资料&#xff0c;TWS降噪蓝牙耳机项目资料 1 ADU1777芯片介绍 2 DSP 三种主动降噪方式 3 sigma开发方式

9-树-从前序与中序遍历序列构造二叉树

这是树的第9篇算法&#xff0c;力扣链接。 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,…

06 - python操作xml

认识XML 与HTML很像&#xff0c;是一种将数据存储在标记之间的标记语言&#xff0c;用户可以自定义自己的标记。 XML文件可以表示称为&#xff1a;XML树。这个XML树从根元素开始&#xff0c;根元素进一步分支到子元素。XML文件的每个元素都是XML树的一个节点&#xff0c;没有…

雷达DoA估计的跨行业应用--麦克风阵列声源定位(Matlab仿真)

一、概述 麦克风阵列&#xff1a; 麦克风阵列是由一定数目的声学传感器&#xff08;麦克风&#xff09;按照一定规则排列的多麦克风系统&#xff0c;而基于麦克风阵列的声源定位是指用麦克风拾取声音信号&#xff0c;通过对麦克风阵列的各路输出信号进行分析和处理&#xff0c;…

背景样式de七七八八

一&#xff0c;简介 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 1.1背景颜色&#xff08;background-color&#xff09; background-color&#xff1a;transparent/color&#xff1b; 默认值为transparent&#xff08;透明的&#xff…

MacBook有必要装清理软件吗?CleanMyMac的一些主要特点

MacBook是苹果公司的一款高端笔记本电脑&#xff0c;但是&#xff0c;随着使用时间的增长&#xff0c;MacBook也会出现一些问题&#xff0c;比如运行缓慢、卡顿、垃圾文件堆积、磁盘空间不足等。这些问题不仅影响了用户的使用体验&#xff0c;也可能对MacBook的寿命和安全性造成…

Vue3.0(二):Vue组件化基础 - 脚手架

Vue组件化基础 - 脚手架 Vue的组件化 我们在处理一些任务量比较庞大的工作时候&#xff0c;会将工作内容进行拆分&#xff0c;分步骤完成 而组件化的思想正式如此&#xff0c;对于一个庞大的项目&#xff0c;我们可以将其拆分成一个个的小功能&#xff0c;分步骤进行实现 组…

迅为RK3588开发板ubuntu和window互传图形界面直接拖拽进行文件传输

确保以及安装了 VMware Tools。如下图所示表示已安装过了。 和 windows 端文件夹间传输一样直接拖拽进去即可&#xff0c;如下图所示&#xff1a; 也可拖拽到终端&#xff0c;如下图所示&#xff1a; 更多内容可以B站搜索迅为RK3588开发板

【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“

使用idea运行项目&#xff0c;显示错误信息如下&#xff1a; 原因是&#xff1a;idea配置的maven加载不到autoconfigure。 解决方案一&#xff1a; 第6步绕过证书语句如下&#xff1a; -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue 打开终端&am…

算法学习——华为机考题库10(HJ64 - HJ69)

算法学习——华为机考题库10&#xff08;HJ64 - HJ69&#xff09; HJ64 MP3光标位置 描述 MP3 Player因为屏幕较小&#xff0c;显示歌曲列表的时候每屏只能显示几首歌曲&#xff0c;用户要通过上下键才能浏览所有的歌曲。为了简化处理&#xff0c;假设每屏只能显示4首歌曲&a…